【问题标题】:How to customize QDialogButtonBox buttons' background color?如何自定义 QDialogBu​​ttonBox 按钮的背景颜色?
【发布时间】:2020-11-19 00:04:32
【问题描述】:

我有:

auto btnBox = new QDialogButtonBox(QFlags({QDialogButtonBox::Abort, QDialogButtonBox::Ok}));

layout()->addWidget(btnBox);

我试过了

btnBox->setStyleSheet("QPushButton {background-color : red;}");

但按钮仍然是浅灰色...

感谢您的帮助

【问题讨论】:

标签: qt


【解决方案1】:

以下较短的版本更改了按钮的背景颜色:

auto btnBox = new QDialogButtonBox( QDialogButtonBox::Abort| QDialogButtonBox::Ok );
layout()->addWidget(btnBox);
btnBox->setStyleSheet("background: red");

【讨论】:

  • 感谢您的帮助 :) 抱歉,它不起作用,这里的按钮仍然是浅灰色...(windows)
  • 刚刚用最少的代码进行了测试:两种变体(您的和简化的)都可以正常工作。所以你周围的代码中可能有一些东西。例如,您是否在父小部件上设置了其他样式表?清洁重建?哪个 Qt?
  • 不,但是 QDialogBu​​ttonBox 位于小部件中的小部件布局中等...我尝试删除所有样式,但您提供的样式仍然没有红色:(即使是干净的重建...我在 Qt 5.14.2
  • 嗨,我做了一个最小的复制项目,你的代码可以工作,所以我试图从我的大项目中包含更多的东西,看来这是我的 QStyle 重载导致了这个问题。感谢您的帮助:)
  • 好吧,我们找到了罪魁祸首:QWinfowsVistaStyle 只是将按钮绘制到窗口,所以 QPalette 没有被处理......
【解决方案2】:

@SteveXP 解决方案有效,如果你不使用 QWindowsVistaStyle,它使用原生绘图

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多