当我的应用程序失去焦点时,我需要设置透明度。
我还需要在重新获得焦点时重置透明度(通过鼠标单击或 alt-tab 或其他方式)
我知道如何设置透明度,所以这不是问题:
设置窗口不透明度(0.75);
问题是何时?
我同意 Kévin Renella 的观点,即有时会出现问题QWidget::focusInEvent
and QWidget::focusOutEvent
。相反,更好的方法是实施QWidget::changeEvent()
:
void MyQWidget::changeEvent(QEvent *event)
{
QWidget::changeEvent(event);
if (event->type() == QEvent::ActivationChange)
{
if(this->isActiveWindow())
{
// widget is now active
}
else
{
// widget is now inactive
}
}
}
您还可以通过安装来实现同样的目的event-filter
. See 事件系统 http://doc.qt.io/qt-5/eventsandfilters.html有关更多信息,请参阅 Qt 文档。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)