Qt5 QWidget :悬停效果延迟



我正在尝试使用以下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,需要大量手工制作的可视化代码。

相关内容

  • 没有找到相关文章

最新更新