【问题标题】:Qt: how to set the background color of QPushButton to System-color?Qt:如何将 QPushButton 的背景颜色设置为 System-color?
【发布时间】:2011-10-31 17:17:27
【问题描述】:

我在父窗口小部件上有一个 QPushbutton。我现在想给父窗口小部件一个新的背景(例如颜色,图像),这很好用(使用 QPalette)。但是,当我使用 Unix 时,父窗口的颜色会传播到按钮。就像按钮具有透明背景一样。这在某些情况下很好,但有时我只希望父窗口小部件的背景改变而不是孩子。这样按钮将保持其原始的“系统”外观。如何做到这一点?我尝试了很多......但没有给我想要的结果。关于如何实现这一目标的任何想法?

谢谢

【问题讨论】:

    标签: qt


    【解决方案1】:

    您是否尝试过使用setBackgroundRole 作为按钮?也许您的按钮具有QPalette::NoRole,因此从其父级继承其角色。

    【讨论】:

    • 不,这不起作用。该按钮从其父级继承角色...并且父级在 Role::Window、Role::Button 上设置了颜色。因此,更改按钮的背景角色不会改变任何内容。
    • 好的,我找到了解决方案...必须使用standardPalette()(可以通过QApplication::style() oder widget->style() 检索)并覆盖整个调色板childwidget 或只是具有标准调色板值的单个角色。
    【解决方案2】:

    如果您的 Button 似乎继承了 MainWindow 的背景,请尝试以这种格式设置样式表。

    this->setStyleSheet("MainWindow{background-color:red}");
    

    现在,您的按钮将不会继承背景。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 2015-02-01
      • 1970-01-01
      • 2014-01-07
      • 2019-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多