如何更改QMainWindow边框和标题栏的颜色?

11
下面的QMainWindow使用QSS分配了深灰色背景颜色。我还想更改边框和标题栏的颜色。如何控制QMainWindow边框和标题栏的外观?我想知道如何更改它们的颜色,以及如何控制边框宽度和标题栏的高度。
from PyQt4.QtCore import *
from PyQt4.QtGui import *

appStyle="""
QMainWindow{
background-color: darkgray;
}
"""

class GUI(QMainWindow):
    def __init__(self):
        super(GUI, self).__init__()  
        self.setStyleSheet(appStyle)

if __name__ == '__main__': 
    if not QApplication.instance(): app=QApplication([])
    w=GUI() 
    w.setStyleSheet(appStyle)
    w.show() 
    w.raise_()

    sys.exit(app.exec_())
2个回答

14
据我所知,在Qt中,你不能(在Windows上也许可以通过某些特殊的依赖于操作系统的调用)修改顶层小部件(桌面上的真实窗口)的边框和标题栏,因为这些是由操作系统提供的。
然而,你可以将小部件设置为frameless,并自己添加边框。
例如:
from PySide import QtGui, QtCore

app = QtGui.QApplication([])
app.setStyleSheet('QMainWindow{background-color: darkgray;border: 1px solid black;}')

w = QtGui.QMainWindow()
w.setWindowFlags(QtCore.Qt.FramelessWindowHint)
w.show()

app.exec_()

看起来像是:

在此输入图片描述

你会发现不幸的是通常的标题栏消失了,因此没有拖动、缩放、关闭或最小化。这些都必须自己实现。例如,参见如何处理标题栏中的事件并更改其颜色等?


1
这可以通过从Windows注册表中检测当前系统主题并应用Dark Window提示来在QT C++中实现。除此之外,一个暗色风格可以使得窗口的亮暗模式更加丰富多彩。
如果需要适应,可以参考这里分享的一个演示项目。 https://envyen.com/posts/2021-10-24-QT-Windows-Dark-theme/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接