我已经创建了一个Qt应用程序,它使用的是稍微修改过的“清洁外观”样式。我尝试过用下面的代码设置WindowText,但更改不起作用。当我打开应用程序时,它会以正确的文本颜色在后台打开,当我单击应用程序并将其带到前台时,文本会恢复为黑色,而我无法确定原因。有人知道为什么会这样,或者我应该如何设置窗口文本吗?
#include <QtGui/QApplication>
#include <QtGui/QPalette>
#include <QtGui/QColor>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPalette p;
p.setBrush(QPalette::WindowText, QColor(255,0,0));
a.setStyle("cleanlooks");
a.setPalette(p);
MainWindow w;
w.show();
return a.exec();
}我正在使用OSX10.9和Qt 4.8.6
更新1
我在运行QT4.8.5的windows 7机器上测试了源代码,没有出现这个问题。我似乎不是MacOS 10.9或QT4.8.6的问题
发布于 2013-11-07 16:10:47
我认为您的答案已经被报告(并确认)为QT错误(QTBUG-32067)。
虽然我们从未真正支持大多数QMacStyle的自定义调色板角色,但我认为我们应该允许在它上设置一个自定义调色板,即使在某些情况下它会中断。简论QTBUG-32067
发布于 2013-11-05 17:46:57
见QApplication的文档说明::setpalette。
备注:一些样式并不是所有绘图都使用调色板,例如,如果它们使用了本地主题引擎。Windows XP、Windows和Mac样式就是这种情况。
因此,您可以通过运行不同样式的应用程序来检查这一点,方法是从shell启动应用程序,如下所示:
applicationToRun -style=windows或者使用其他样式,docs说: motif,windows和白金,但这取决于安装的Qt和它的插件。
编辑: ups我没有注意到您正在按代码设置样式。无论如何,验证当前机器上的Qt是否支持您正在强制执行的样式,检查a.setStyle("cleanlooks");是否返回有效的样式(对于错误,它返回null)。我会尝试所有的样式(列出可用的表格QStyleFactory::keys())。
https://stackoverflow.com/questions/19748752
复制相似问题