我正在尝试为所有按钮设置全局样式表。 按照以下特定按钮执行此操作,按预期工作:
button->setStyleSheet(QString("QPushButton:focus {") +
"outline: 0;" +
"background-color: #" + BUTTON_HIGHLIGHT_BG_COLOR + "; " +
"color: #" + BUTTON_HIGHLIGHT_TXT_COLOR + "; " +
"}"
);
但如果我把它变成全球性的,就像这样:
qApp->setStyleSheet(QString("QPushButton:focus {") +
"outline: 0;" +
"background-color: #" + BUTTON_HIGHLIGHT_BG_COLOR + "; " +
"color: #" + BUTTON_HIGHLIGHT_TXT_COLOR + "; " +
"}"
);
聚焦按钮获得正确的字体颜色,但它们似乎没有背景(尽管我为它们设置的背景与主要布局的背景不同。)
BUTTON_HIGHLIGHT_BG_COLOR
和BUTTON_HIGHLIGHT_TXT_COLOR
是颜色的字符串(例如“FF0000”)
它可能是什么原因,它适用于特定的小部件,但全局失败?
更新
我跟着@ThorngardSO的回答,最后通过改变来解决它:
stackedWidget->setStyleSheet("background-color: white;");
为:
stackedWidget->setStyleSheet("QStackedWidget { background-color: white; }");
位于加载屏幕(第一个屏幕)
答案 0 :(得分:3)
你应该尽可能地缩小范围:
setPalette()
或setAutoFillBackground()
等函数(或者在设计器中设置auto-fill-background属性)?如果是,请删除这些电话,看看会发生什么。答案 1 :(得分:2)
不是说这是你的问题,而是你在运行时从一点一刻组装那个常量字符串。不要那样做。相反,你可以简单地通过将它们放在一起来简单地在C和C ++中连接字符串文字。
qApp->setStyleSheet(QStringLiteral(
"QPushButton:focus {"
"outline: 0;"
"background-color: #" BUTTON_HIGHLIGHT_BG_COLOR "; "
"color: #" BUTTON_HIGHLIGHT_TXT_COLOR "; "
"}"
));
如果您希望颜色在运行时可更改,请使用%-substitution:
qApp->setStyleSheet(QStringLiteral(
"QPushButton:focus {"
"outline: 0;"
"background-color: #%1; "
"color: #%2; "
"}"
).arg(background).arg(foreground));