QPushButton或QToolButton的颜色

时间:2011-10-13 19:24:26

标签: qt stylesheet

我正在使用Qstylesheet来控制某些QPushButtons和QToolButtons的行为。当我将鼠标悬停在它们上面时,它们会变成黑色,就像我想要的那样。然而,一旦我按下它们,它们会变成一种有趣的灰红色,并且在它们内部绘制了一个红色框。

为了避免这种行为,我必须设置什么属性或伪状态?我已经浏览了与选择和背景相关的所有属性,并且不能让它消失

1 个答案:

答案 0 :(得分:5)

如果没有看到你的风格,你就很难解决问题。所以我要做的就是解释一下事情是如何运作的,希望你能决定如何最好地解决你的问题。

首先,在设计按钮时确保覆盖所有基础非常重要。我相信你知道大部分内容,但以防万一...

QPushButton和QToolButton有许多可以设置样式的状态,因此您需要确保每个状态的按钮明显不同,以便用户可以分辨出来。

QPushButton
{ 
   //  The default look of your button
}

QPushButton:disabled 
{ 
}

QPushButton:pressed  
{  
}

QPushButton:focus    
{
}

QPushButton:hover
{
}

QPushButton:checked
{
}

使用诸如背景颜色,前景色,边框颜色之类的东西,通常你很高兴。

background-color: red;
color: white;  // foreground color
border-width: 1px;
border-color: black;

第二件要知道的是,样式可以继承。因此,在向窗口小部件添加样式时要非常小心。创建样式时尝试具体。如果你将这种风格赋予UI中的某些内容,背景颜色将是蓝色的,但危险的是,这一个的所有子窗口小部件也将继承此样式。

QWidget
{
    background-color: blue;
}

也许这就是你想要的,但往往不是。因此,如果你是造型按钮总是将QPushButton或QToolButton选择器放在它们周围,那么同样适用于你正在造型的其他东西。所以有可能是你的灰色带红色的地方。

现在,关于样式按钮的最后一件事就是焦点矩形。当您的按钮聚焦时,会出现刺激性的虚线。见下图。

Focus rectangle

不幸的是,没有办法使用样式表来设置焦点矩形的样式。但是你可以摆脱它,如果这就是你想要的。请参阅以下链接:

Getting rid of the focus rectangle

所以,总结......

  1. 确保您的按钮样式涵盖了您的所有状态 需要。
  2. 确保您的按钮不受任何其他按钮的影响     您添加到其他小部件的样式。
  3. 要么改变,要么摆脱     根据需要设置焦点矩形。
  4. 我希望有所帮助。如果您需要更具体的帮助,请发表您的风格,我会看一下。