gpt4 book ai didi

qt - 如何使用 qss 自定义 QMdiSubWindow 的标题栏?

转载 作者:行者123 更新时间:2023-12-04 13:19:39 31 4
gpt4 key购买 nike

我想自定义 QMdiSubWindow 的标题栏。
为此,我使用 qss。

QMdiSubWindow { border: 1px solid #000000; background: #000000 }
QMdiSubWindow:title { background: #000000 }

问题是当应用这个 qss 时,窗口图标消失了。
我知道可以在 qss 中为 QDockWidget 定义这些图标
QDockWidget { ... titlebar-close-icon: url(myCloseIcon.png); ... }

但是我找不到为 QMdiSubWindow 定义它的方法。
或许这种方式并不存在。
你知道这是否可能吗?

最佳答案

截至Qt 5.2你不能;没查过5.3但 AFAIK 他们没有改变 QMdiArea/QMdiSubWindow 中的任何内容在 5.3释放。

您拥有的最简单的解决方案是使用 QCommonStyle并使用 QPainter 绘制标题栏.有关这方面的更多信息,请参阅 QCommonStyleQStyle文件。请注意,建议派生QCommonStyle而不是 QStyle为你的风格课。 QCommonStyle继承 QStyle所以你不会丢失任何东西。

如果您想实现更复杂的效果,例如子窗口上的阴影,那么您在这里剩下的唯一选择就是派生QMdiSubWindow。和 QMdiArea , 调用QWidget::setWindowFlags(Qt::FramelessWindowHintflag)QMdiSubWindow派生类并使用您自己的标题栏从头开始实现您自己的子窗口。然后您可以定义自己的Q_PROPERTY s 类型 QColor并从 QSS 访问那些喜欢暴露here为了从 QSS 自定义标题栏颜色.

另一种选择是从头开始创建一个新的 MDI 区域小部件,但我认为这不适用于您的情况。如果您只需要使用自定义样式自定义标题栏是您可以解决的最佳方法。如果遇到问题,可以提供示例作为对这篇文章的编辑。

但是如果要自定义标准QMdiSubWindow仅使用 QSS ,不幸的是,目前不可能。

关于qt - 如何使用 qss 自定义 QMdiSubWindow 的标题栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4639407/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com