【发布时间】:2014-07-14 18:01:25
【问题描述】:
当使用样式表设置QLineEdit 的background-color 时,鼠标悬停在控件上时会出现非常明显的闪烁。示例代码:
QLineEdit* flicker = new QLineEdit(this);
flicker->setStyleSheet("QLineEdit {background: red;}");
flicker->show();
只有在 Windows Vista 和更高版本上运行时才会发生这种情况,而不是在 XP 中。我认为这与 Windows(Aero?)应用程序的默认样式有关,因为将样式设置为 QStyle::Fusion 可以解决问题:
QLineEdit* flicker = new QLineEdit(this);
QStyle* fusion = QStyleFactory::create(QString("Fusion"));
flicker->setStyle(fusion);
flicker->setStyleSheet("QLineEdit {background: red;}");
flicker->show();
编辑:
我还设置了eventfilter,以便在鼠标悬停时重新绘制控件,并且调试器正在确认立即调用该控件。
【问题讨论】:
-
您确实需要发布一个重现问题的完整示例。可以在没有其他任何东西的情况下编译的单个文件。到目前为止,如果没有您损坏的鼠标悬停代码,我无法重现它。
-
你到底在问什么?如何解决闪烁问题?
-
是的,我想知道如何解决闪烁问题。 @KubaOber:即使没有鼠标悬停代码,也会发生闪烁。只需设置样式表就足以使问题发生(至少在我的机器上)。
-
这种方法看起来比较稳定。尽管 LineEdit 中添加了其他功能,例如圆角。