QEvent::WindowDeactivate
当用户鼠标在应用之外时,会触发QEvent::WindowDeactivate事件,
Qt5Widgetsd.dll!QApplication::setActiveWindow(QWidget * act) Line 2072 C++
Qt5Widgetsd.dll!QApplicationPrivate::notifyActiveWindowChange(QWindow * previous) Line 2133 C++
对应的父类QWidget的响应事件方法,会先调用自己的update,再遍历所有儿子,并传播该事件给可见儿子
case QEvent::WindowDeactivate: {
if (isVisible() && !palette().isEqual(QPalette::Active, QPalette::Inactive))
update();
QList<QObject*> childList = d->children;
for (int i = 0; i < childList.size(); ++i) {
QWidget *w = qobject_cast<QWidget *>(childList.at(i));
if (w && w->isVisible() && !w->isWindow())
QApplication::sendEvent(w, event);
}
break; }
而update函数会把自己加到QWidgetBackingStore的dirty

4207

被折叠的 条评论
为什么被折叠?



