2011-08-21 269 views
1

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

THX

回答

0

您是否尝试过使用setBackgroundRole的按钮?也许你的按钮有QPalette::NoRole,因此从它的父项继承它的角色。

+0

不,这是行不通的。该按钮从其父项继承角色...并且父项具有在角色::窗口,角色::按钮上设置的颜色。因此改变按钮的背景角色不会改变任何东西。 – brainpain

+0

好吧,我找到了一个解决方案...一个人必须使用standardPalette()(可以通过QApplication :: style()或者widget-> style())来获取并覆盖childwidget的整个调色板,或者使用标准调色板的值。 – brainpain

0

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

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

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