我注意到QWidget何时变得可见/不可见时没有信号/事件。还有什么我可以钩住的来获得大致相同的东西(除了轮询是可见())?
如果显示数据的小部件不可见,我想打开一些数据获取。
一种解决方案是,您可以覆盖QWidget::showEvent()
并在小部件(文档)中QWidget::hideEvent()
函数。然后emit
自定义signal
并在相应对象中的slot
中捕获。例如。。
void MyWidget::hideEvent(QHideEvent *)
{
// 'false' means hidden..
emit widgetVisibilityChanged(false);
}
void MyWidget::showEvent(QShowEvent *)
{
// 'true' means visible..
emit widgetVisibilityChanged(true);
}
现在,如果您无法覆盖小部件,您还可以使用QObject::installEventFilter ( QObject * filterObj )
和QObject::eventFilter ( QObject * watched, QEvent * event )
组合(文档和示例)在其父小部件中接收上述事件。