QLabel setPalette()改变字体颜色无效

王桑的一天 2020-06-15 11:52:33
QLabel setPalette()改变字体颜色无效,怎么回事啊?

QLabel *temp_lb = new QLabel("Test", this);
temp_lb->setContentsMargins(9, 0, 9, 0);
temp_lb->setAutoFillBackground(true);
QPalette palette;
palette.setColor(QPalette::WindowText, QColor("#DAE6FF"));
temp_lb->setPalette(palette);


怎么感觉QPalette 这东西这么不好用啊,但这里不能用QSS,必须用这个啊
...全文
7018 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuiiao 2022-12-02
  • 打赏
  • 举报
回复

看下有没有在对父控件setStyleSheet设置样式时,其中设置了QLabel的样式

dhhb2003 2021-12-22
  • 打赏
  • 举报
回复

您好你解决该问题了吗

苏州-青蛙 2020-07-13
  • 打赏
  • 举报
回复
我也出现了你这个bug 那个设置pattle控件的任何父窗口在设计师里不能有一点点样式,我最后手动样式设在了代码里才有用,绝对是bug,我另外一个项目好好的,就这项目设计师写一点样式就不行。
smile_sambery 2020-06-29
  • 打赏
  • 举报
回复
引用 13 楼 管理員的回复:
[quote=引用 12 楼 smile_sambery 的回复:] 文字用font吧,然后调用setfont就会生效
setFont 是改字体大小、粗细这些,不管颜色的[/quote] 有一个font-color可以配颜色啊
smile_sambery 2020-06-29
  • 打赏
  • 举报
回复
引用 13 楼 管理員的回复:
[quote=引用 12 楼 smile_sambery 的回复:] 文字用font吧,然后调用setfont就会生效
setFont 是改字体大小、粗细这些,不管颜色的[/quote] 有一个font-color可以配颜色啊
smile_sambery 2020-06-29
  • 打赏
  • 举报
回复
你试试将painter和palettw一起使用。
王桑的一天 2020-06-29
  • 打赏
  • 举报
回复
引用 12 楼 smile_sambery 的回复:
文字用font吧,然后调用setfont就会生效
setFont 是改字体大小、粗细这些,不管颜色的
王桑的一天 2020-06-29
  • 打赏
  • 举报
回复
引用 17 楼 smile_sambery 的回复:
我说的是设置qss里面有一个font-color

呃……我前面说了不想在代码里写 qss,而且颜色是动态的,数量不固定,难以用qss,所以才想用 palette
smile_sambery 2020-06-29
  • 打赏
  • 举报
回复
我说的是设置qss里面有一个font-color
王桑的一天 2020-06-29
  • 打赏
  • 举报
回复
引用 15 楼 smile_sambery 的回复:
[quote=引用 13 楼 管理員的回复:][quote=引用 12 楼 smile_sambery 的回复:] 文字用font吧,然后调用setfont就会生效
setFont 是改字体大小、粗细这些,不管颜色的[/quote] 有一个font-color可以配颜色啊[/quote] 你是说 QFont 吗? 没有设置颜色的函数啊
smile_sambery 2020-06-27
  • 打赏
  • 举报
回复
文字用font吧,然后调用setfont就会生效
王桑的一天 2020-06-23
  • 打赏
  • 举报
回复
引用 10 楼 鱼酱2333 的回复:
qss优先级是不是高啊
怎么看呢?怎么改
编程小鱼酱 2020-06-22
  • 打赏
  • 举报
回复
qss优先级是不是高啊
王桑的一天 2020-06-17
  • 打赏
  • 举报
回复

    QLabel *temp_lb = new QLabel("Test", this);
    temp_lb->setContentsMargins(9, 0, 9, 0);
    temp_lb->setAutoFillBackground(true);
    QPalette palette;
    palette.setColor(QPalette::WindowText, QColor("#DAE6FF"));
    temp_lb->setPalette(palette);
    qDebug() << temp_lb->palette().windowText().color();
设置以后,把颜色打印出来是对的,但显示就始终是黑色...
王桑的一天 2020-06-16
  • 打赏
  • 举报
回复
引用 7 楼 hitzsf 的回复:
直接设置setStyleSheet不就行了?

不想把 qss 写在代码里...
王桑的一天 2020-06-16
  • 打赏
  • 举报
回复
引用 5 楼 鱼酱2333 的回复:
QPalette pe; pe.setColor(QPalette::WindowText, Qt::red); QLabel *label = new QLabel(this); label->setPalette(pe); label->setText("Hello World");
恩恩,我就是这样做的,但无法改变文字颜色,背景色却可以
编程小鱼酱 2020-06-16
  • 打赏
  • 举报
回复
QPalette pe; pe.setColor(QPalette::WindowText, Qt::red); QLabel *label = new QLabel(this); label->setPalette(pe); label->setText("Hello World");
编程小鱼酱 2020-06-16
  • 打赏
  • 举报
回复
设置文字颜色不能用 setPalette把
王桑的一天 2020-06-16
  • 打赏
  • 举报
回复
引用 2 楼 鱼酱2333 的回复:
是不是你对后续对父类也进行了 设置,导致了 子类颜色不对啊。
父类没有设置palette,但有设置 qss, 但我取消设置父类的 qss 也不行 QLabel setPalette(QPalette::Background, Qt::red) 设置背景色起作用,设置文字颜色不起作用,奇怪
编程小鱼酱 2020-06-16
  • 打赏
  • 举报
回复
是不是你对后续对父类也进行了 设置,导致了 子类颜色不对啊。
加载更多回复(2)

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧