首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qt样式QPalette::windowText颜色在应用程序启动后恢复

qt样式QPalette::windowText颜色在应用程序启动后恢复
EN

Stack Overflow用户
提问于 2013-11-03 01:02:56
回答 2查看 736关注 0票数 2

我已经创建了一个Qt应用程序,它使用的是稍微修改过的“清洁外观”样式。我尝试过用下面的代码设置WindowText,但更改不起作用。当我打开应用程序时,它会以正确的文本颜色在后台打开,当我单击应用程序并将其带到前台时,文本会恢复为黑色,而我无法确定原因。有人知道为什么会这样,或者我应该如何设置窗口文本吗?

代码语言:javascript
复制
#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的问题

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-07 16:10:47

我认为您的答案已经被报告(并确认)为QT错误(QTBUG-32067)。

虽然我们从未真正支持大多数QMacStyle的自定义调色板角色,但我认为我们应该允许在它上设置一个自定义调色板,即使在某些情况下它会中断。简论QTBUG-32067

票数 1
EN

Stack Overflow用户

发布于 2013-11-05 17:46:57

QApplication的文档说明::setpalette

备注:一些样式并不是所有绘图都使用调色板,例如,如果它们使用了本地主题引擎。Windows XP、Windows和Mac样式就是这种情况。

因此,您可以通过运行不同样式的应用程序来检查这一点,方法是从shell启动应用程序,如下所示:

代码语言:javascript
复制
applicationToRun -style=windows

或者使用其他样式,docs说: motif,windows和白金,但这取决于安装的Qt和它的插件。

编辑: ups我没有注意到您正在按代码设置样式。无论如何,验证当前机器上的Qt是否支持您正在强制执行的样式,检查a.setStyle("cleanlooks");是否返回有效的样式(对于错误,它返回null)。我会尝试所有的样式(列出可用的表格QStyleFactory::keys())。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19748752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档