Rui*_*ião 3 qt stylesheet qtstylesheets
我有以下按钮样式表:
QPushButton:hover{
background: qlineargradient(x1 : 0, y1 : 0, x2 : 0, y2 : 1, stop : 0.0 #ffd9aa,
stop : 0.5 #ffbb6e, stop : 0.55 #feae42, stop : 1.0 #fedb74);
}
QPushButton {
border: 1px solid #6593cf;
border-radius: 2px;
padding: 5px 15px 2px 5px;
background: qlineargradient(x1 : 0, y1 : 0, x2 : 0, y2 : 1, stop : 0.0 #f5f9ff,
stop : 0.5 #c7dfff, stop : 0.55 #afd2ff, stop : 1.0 #c0dbff);
color: #006aff;
font: bold large "Arial";
height: 30px;
}
QPushButton:pressed {
background: qlineargradient(x1 : 0, y1 : 0, x2 : 0, y2 : 1, stop : 0.0 #c0dbff,
stop : 0.5 #cfd26f, stop : 0.55 #c7df6f, stop : 1.0 #f5f9ff);
padding-top: 2px;
padding-left: 3px;
}
QPushButton:on {
background: qlineargradient(x1 : 0, y1 : 0, x2 : 0, y2 : 1, stop : 0.0 #5AA72D,
stop : 0.5 #B3E296, stop : 0.55 #B3E296, stop : 1.0 #f5f9ff);
padding-top: 2px;
padding-left: 3px;
}
QPushButton:disabled {
background: transparent #e5e9ee;
padding-top: 2px;
padding-left: 3px;
color: black;
}
Run Code Online (Sandbox Code Playgroud)
我有一个按钮.当它被按下时,侧面小部件被调整大小.因此按钮获得按下的样式,当我释放它时获得悬停样式.此外,窗口小部件被调整大小并且按钮"跟随"窗口小部件.问题是当我用鼠标进行一些移动时,按钮会保持悬停状态并丢失它.这是qt的错误还是我在样式表代码中遗漏了一些东西.
我做了一个动画GIF显示情况:

谢谢
你可以说这是Qt中的一个错误.我会说这是由正确的逻辑引起的一种错误.为自己判断.Hoverstate由WA_UnderMousewidget属性定义.此属性由应用程序设置:
if ((e->type() == QEvent::Enter || e->type() == QEvent::DragEnter) ...
widget->setAttribute(Qt::WA_UnderMouse, true);
else if (e->type() == QEvent::Leave || e->type() == QEvent::DragLeave)
widget->setAttribute(Qt::WA_UnderMouse, false);
Run Code Online (Sandbox Code Playgroud)
QEvent::Enter和QEvent::Leave事件仅在应用程序从OS接收鼠标事件时发送.
您不移动鼠标,应用程序不会收到任何鼠标事件,因此WA_UnderMouse属性不会更改.
解决这个问题的方法之一是Qt::WA_UnderMouse在移动按钮小部件时将属性设置为正确的值.
| 归档时间: |
|
| 查看次数: |
10393 次 |
| 最近记录: |