【问题标题】:How to change color of QMainWindow borders and title bar?如何更改 QMainWindow 边框和标题栏的颜色?
【发布时间】:2015-04-13 09:41:04
【问题描述】:

使用 QSS 为下面的 QMainWindow 分配了深灰色背景色。 我还想更改边框的颜色和标题栏的颜色。

如何实现对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_())

【问题讨论】:

    标签: python qt pyqt qmainwindow qtstylesheets


    【解决方案1】:

    据我所知,您不能(在 Windows 上可能有一些特殊的操作系统相关调用)在 Qt 中修改顶级小部件(桌面上的真实窗口)的边框和标题,因为这些是从操作系统提供的。

    但是,您可以设置小部件 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_()
    

    看起来像

    不幸的是,通常的标题栏消失了,所以没有拖动,没有调整大小,没有关闭或最小化。那么这一切都必须自己实现。参见例如How can I handle events in the titlebar and change its color etc ?

    【讨论】:

      【解决方案2】:

      这可以通过从 Windows 注册表检测当前系统主题并应用暗窗口提示在 QT C++ 中实现。除此之外,深色样式可以制作暗光窗口模式。

      如果有助于适应,这里分享一个示例项目来证明这一点

      https://envyen.com/posts/2021-10-24-QT-Windows-Dark-theme/

      【讨论】:

        猜你喜欢
        • 2021-02-16
        • 2021-11-30
        • 2017-07-23
        • 1970-01-01
        • 1970-01-01
        • 2015-09-01
        • 2011-10-12
        • 1970-01-01
        相关资源
        最近更新 更多