pyqt:当小部件变为可见/隐藏时接收信号

Rol*_*lle 13 qt signals pyqt

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

如果显示数据的窗口小部件不可见,我想转动一些数据.

Amm*_*mar 22

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

void MyWidget::hideEvent(QHideEvent *)
{
    // 'false' means hidden..
    emit widgetVisibilityChanged(false);
}

void MyWidget::showEvent(QShowEvent *)
{
    // 'true' means visible..
    emit widgetVisibilityChanged(true);
}
Run Code Online (Sandbox Code Playgroud)

现在,如果您无法覆盖窗口小部件,您还可以使用QObject::installEventFilter ( QObject * filterObj )QObject::eventFilter ( QObject * watched, QEvent * event )组合(文档和示例)在其父窗口小部件中接收上述事件.