[英]How to wait for window to be hidden in Qt?
我在一個功能中隱藏了Qt工具箱窗口。 隱藏我的工具箱窗口后,我需要做一些屏幕截圖以在功能中執行。
void ProcessData()
{
Toolbox::getInstance()->hide(); //I am trying to hide toolbox here
//screen capture stuffs. - It should be executed once the toolbox window is hidden.
}
但是發生的是,僅當ProcessData()返回時,Toolbox才隱藏。 這導致我捕獲的屏幕上有工具箱的問題。
有什么方法可以等待工具箱在Qt中隱藏嗎?
除了使用QApplication::processEvents
,我還建議您一個更優雅的解決方案:
重新實現由Toolbox::getInstance
返回的類的QWidget::hideEvent
發出信號,例如widgetHidden
protected: void hideEvent(QHideEvent *event) { QWidget::hideEvent(event); Q_EMIT widgetHidden(); } signals: void widgetHidden();
將widgetHidden
連接到插槽以捕獲屏幕
connect(Toolbox::getInstance(), &MyWidget::widgetHidden, this, &ClassName::onWidgetHidden);
其中MyWidget
是Toolbox::getInstance
返回的類,而ClassName
是ProcessData
所屬的類的名稱。
添加一個標志以了解是否是正確的捕獲時間,因為小部件可能以其他方式隱藏
bool m_captureAllowed = false;
實現onWidgetHidden
插槽
private slots: void onWidgetHidden() { if (m_captureAllowed) { m_captureAllowed = false; //screen capture stuffs } }
在ProcessData
設置標志
void ProcessData() { m_captureAllowed = true; Toolbox::getInstance()->hide(); //I am trying to hide toolbox here }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.