19

我注意到当 QWidget 变得可见/不可见时没有信号/事件。还有什么我可以挂钩以获得大致相同的东西(轮询isVisible()除外)?

如果显示数据的小部件不可见,我想关闭一些数据获取。

4

1 回答 1

31

一种解决方案是,您可以在小部件(文档)中覆盖QWidget::showEvent()和运行。然后您自定义并捕获相应对象中的 a 。例如..QWidget::hideEvent()emitsignalslot

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 )组合(文档和示例)在其父小部件中接收上述事件。

于 2012-06-07T07:11:48.000 回答