<p>至少有两种解决方案:</p>
<p><strong>1。使用Qt样式表</strong></p>
<p>您必须使用QMdiSubWindow:title的“background”属性来更改颜色,而要删除图标,诀窍是传递一个透明颜色的图标</p>
<pre><code>from PyQt5 import QtCore, QtGui, QtWidgets
QSS = """
QMdiSubWindow:title{
background: lightgray;
}
"""
def create_icon_by_color(color):
pixmap = QtGui.QPixmap(512, 512)
pixmap.fill(color)
return QtGui.QIcon(pixmap)
class Mywindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(Mywindow, self).__init__(parent)
self.setWindowTitle("Customized style")
self.mdiarea = QtWidgets.QMdiArea()
self.setCentralWidget(self.mdiarea)
self.mdiarea.setWindowTitle("Test")
self.window = QtWidgets.QWidget()
self.window.setMinimumSize(320, 240)
sw = self.mdiarea.addSubWindow(self.window)
sw.setWindowIcon(create_icon_by_color(QtGui.QColor("transparent")))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
app.setStyle("Fusion")
app.setStyleSheet(QSS)
view = Mywindow()
view.show()
sys.exit(app.exec_())
</code></pre>
<p><a href="https://i.stack.imgur.com/W0vDb.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/W0vDb.png" alt="enter image description here"/></a></p>
<p>正如您在我的操作系统中看到的,它中间有一个不需要的白色,这是用来给子窗口的标题着色的,可能在另一个操作系统中它不会产生这个问题。在</p>
<p><strong>2。使用qproxy样式</strong></p>
<p>在这种情况下,您可以修改样式,这样它应该比前一个更健壮,并且不应该有其他样式。对于一个简单的操作,我创建了一个自定义QMdiSubWindow。在</p>
^{pr2}$
<p><a href="https://i.stack.imgur.com/QPCFg.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/QPCFg.png" alt="enter image description here"/></a></p>