我正在尝试使用以下CSS在我的QWidget
上创建任何类型的:hover
效果:
QWidget.mis--MyButton {
width: 300px;
height: 300px;
background: white;
/*cursor: pointer;*/
font-family: Calibri;
border-radius: 10px;
border: 2px solid rgb(218, 218, 218); /*#007FEB;*/
padding: 1px;
margin-top: 2px;
}
QWidget.mis--MyButton:hover
{
border: 2px solid #007FEB; /*#007FEB;*/
}
但是,从鼠标进入小部件到效果出现的时间略有 2-3 秒的延迟。
以下是所发生情况的截屏视频:
https://youtu.be/aNfEKabut-A
对于绘画,我使用以下代码:
void MyButton::paintEvent(QPaintEvent * event)
{
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
即使我试图摆脱CSS,即不加载任何CSS,只是尝试产生任何效果并使用Qt的样式,例如,这样:
style()->drawPrimitive(QStyle::PE_PanelButtonBevel, &opt, &p, this);
只需关闭CSS,我仍然得到相同的延迟。
这是具有相同效果的截屏视频,没有加载 CSS,并且在paintEvent
中选择了QStyle::PE_PanelButtonBevel
选项:
https://youtu.be/kT10zdepsGk
计算机相当强大,Windows 10上的Ryzen 7,我使用的是VC++ 2017,所以它不应该与类似的东西有关。
如果您需要更多代码,请告诉我。
谢谢!
对于包含大量项目的快速动画,建议使用 QtQuick/QML 场景。
QSS很慢,因为它需要大量的重新计算并在CPU上进行。QGraphicsScene工作得更快,但同样 - 它是CPU,需要大量手工制作的可视化代码。