12
我注意到當QWidget變成可見/不可見時沒有信號/事件。除了輪詢isVisible())之外,還有其他的東西可以用來獲得大致相同的結果嗎?pyqt:當widget變得可見/隱藏時接收信號
如果顯示數據的窗口部件不可見,我想打開一些數據提取窗口。
我注意到當QWidget變成可見/不可見時沒有信號/事件。除了輪詢isVisible())之外,還有其他的東西可以用來獲得大致相同的結果嗎?pyqt:當widget變得可見/隱藏時接收信號
如果顯示數據的窗口部件不可見,我想打開一些數據提取窗口。
一個解決方案是,您可以覆蓋您的小部件中的QWidget::showEvent()
和QWidget::hideEvent()
函數(documentation)。然後emit
您自定義signal
並在相應的對象中捕獲slot
。例如..
void MyWidget::hideEvent(QHideEvent *)
{
// 'false' means hidden..
emit widgetVisibilityChanged(false);
}
void MyWidget::showEvent(QShowEvent *)
{
// 'true' means visible..
emit widgetVisibilityChanged(true);
}
現在,如果你不能覆蓋你的widget,你也可以收到上面使用QObject::installEventFilter (QObject * filterObj)
和QObject::eventFilter (QObject * watched, QEvent * event)
組合(documentation and example)在其父控件的事件。
請注意,儘管QWidget基類沒有這個信號,但您會發現其他類還有一個。例如QWindow有[visibleChanged](http://doc.qt.io/qt-5/qwindow.html#visible-prop)...而QDockWidget具有奇怪的稍微不同的名稱[visibilityChanged](http: //qt-project.org/doc/qt-4.8/qdockwidget.html#visibilityChanged)。 – HostileFork