当窗口的任何窗口小部件消失时,Qt中是否有办法处理情况。即,如果窗口小部件处于选项卡控件中,并且用户已更改活动选项卡,或者用户只是滚动并且窗口小部件在屏幕外,以及当它返回到屏幕上时。
可以为这两个事件添加一些代码吗?
如果可以在全球范围内完成,那就最好......
答案 0 :(得分:1)
当窗口的任何窗口小部件消失时,Qt中是否有办法处理情况。即,如果窗口小部件处于选项卡控件中,并且用户已更改活动选项卡,或者用户只是滚动并且窗口小部件在屏幕外,以及当它返回到屏幕上时。
问题的方式使人们认为需要处理小部件show-hide-expose状态更改:
bool MyWidget::event(QEvent* pEvent)
{
if (pEvent->type() == QEvent::Show)
{
// event "shown"
}
else if (pEvent->type() == QEvent::Hide)
{
// event "hidden"
}
else if (pEvent->type() == QEvent::Expose)
{
// event "exposure changed"
// deal with QExposeEvent and evaluate the exposed region
// QExposeEvent* pExposeEvent = reinterpret_cast<QExposeEvent*>(pEvent);
}
return QWidget::event(pEvent);
}
如果可以在全球范围内完成,那就最好......
顶级窗口小部件中的事件过滤器可以解决这个问题。或者,您可以覆盖顶级窗口小部件的event()功能,但查找受影响的确切窗口小部件是另一回事。
请参阅QExposeEvent description。