使用悬停和按下样式表 Qt

Posted

技术标签:

【中文标题】使用悬停和按下样式表 Qt【英文标题】:Using Hover and Pressed stylesheet Qt 【发布时间】:2013-10-10 06:21:55 【问题描述】:

我在按钮 pushButton 样式表中使用了这个

 QPushButton#pushButton 
     background-color: yellow;
 
 QPushButton#pushButton:pressed 
     background-color: rgb(224, 0, 0);     
 
 QPushButton#pushButton:hover 
     background-color: rgb(224, 255, 0);
 

当我将鼠标悬停在它上面时,它会改变颜色,就像我期望的那样,但是即使我按下按钮,悬停颜色仍然存在。 我尝试更改顺序,但仍然是同样的问题。 Qt 中的小新。

【问题讨论】:

'pusButton'。哎呀! 【参考方案1】:

你可以组合状态,例如:

QPushButton:hover:!pressed

  border: 1px solid red;

QSS reference - states

【讨论】:

好的!工作正常。非常感谢我使用了这个 :: QPushButton#pushButton background-color:red QPushButton#pushButton:hover:!pressed background-color:green QPushButton#pushButton:hover background-color:yellow 这是对您问题的回答,但在一行中。如果你不明白,我会调整它;)。主要思想,您可以根据需要组合状态。我建议阅读qt文档,有很多有用的示例-doc.qt.digia.com/4.7/stylesheet-reference.html【参考方案2】:

Css 和 Qt CSS 取决于声明的顺序。以后具有相同特性的声明将覆盖以前的声明。因此,为了让pressed 状态优先,只需将其移至hover 状态下方即可。

QPushButton#pushButton 
    background-color: yellow;


QPushButton#pushButton:hover 
    background-color: rgb(224, 255, 0);


QPushButton#pushButton:pressed 
    background-color: rgb(224, 0, 0);     

【讨论】:

在 Windows 10 上,仅在您单击它后才在悬停时不起作用,这是否正常?【参考方案3】:

可以在QPushButton中设置图片:

QPushButton#pushButton 
     background-url(Images/image1.png);
 
 QPushButton#pushButton:pressed 
     background-url(Images/image2.png);   
 

 QPushButton#pushButton:hover 
      background-url(Images/image3.png);
 

【讨论】:

你为什么认为这个问题是关于背景图片的?

以上是关于使用悬停和按下样式表 Qt的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Qt 样式表 "Foo:hover * " 总是适用?

qt 样式表基本用法

QT样式表

Qt设置样式

使用 Qt 样式表的类实例的样式

为条纹表添加样式,包括悬停功能