如何为QWizard的按钮区域设置样式?

17

我有一个应用程序,其中样式设置在qss文件中。现在所有小部件的背景都是较暗的颜色,按钮也有它们自己的样式。

这在软件的整个过程中都有效,除了QWizard,在其中似乎有它自己的按钮区域位于向导底部,并且默认的qt小部件颜色仍然适用于它。

我已经查看了可以将样式应用于QWizard的各个组件,但它们中没有一个似乎是表单底部的此按钮区域,只想知道是否有人遇到过这种情况,并找到需要应用样式以更改此区域颜色的对象。

输入图像描述


我正在使用一个.qss样式表来为整个程序设置样式,该样式表在主函数中应用,而不是内联设置样式。我已经尝试设置背景颜色和QWizard页面的背景颜色,但都没有任何效果。 - AngryDuck
暂时移除你的样式并设置 * {background: red}。这将影响每个小部件。 - svlasov
已删除整个样式表并按照您的建议将所有内容设置为红色,但其样式没有改变。我猜这意味着您无法更改样式了? - AngryDuck
这很奇怪,就好像Qt会使用本地的Windows组件来处理按钮区域。我会在Windows上尝试一下并让你知道结果。 - svlasov
不,你不需要这样做。请阅读注释。我已经开始了一个全新的项目,只包含一个 QWizard,并尝试对其应用样式,但无法改变底部栏的颜色。这是一个完全通用的问题,不是由错误代码引起的... - AngryDuck
显示剩余4条评论
1个回答

3

如果将向导样式设置为ClassicStyle,则可以使用QSSQWidgets进行着色。

wizard->setWizardStyle(QWizard::ClassicStyle);

默认情况下,QWizard 中硬编码的 VistaStyle 绘图如下:

if (wizardPrivate->isVistaThemeEnabled(QVistaHelper::VistaBasic)) {
    if (window()->isActiveWindow())
        painter.setPen(QPen(QBrush(QColor(169, 191, 214)), 0)); // ### hardcoded for now
    else
        painter.setPen(QPen(QBrush(QColor(182, 193, 204)), 0)); // ### hardcoded for now
    painter.drawLine(0, 0, width(), 0);
}

Code on Github


我今天才测试了一下,结果完美无缺,谢谢你,赏金已颁发。 - AngryDuck

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