簡體   English   中英

如何等待窗口在Qt中隱藏?

[英]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 ,我還建議您一個更優雅的解決方案:

  1. 重新實現由Toolbox::getInstance返回的類的QWidget::hideEvent發出信號,例如widgetHidden

     protected: void hideEvent(QHideEvent *event) { QWidget::hideEvent(event); Q_EMIT widgetHidden(); } signals: void widgetHidden(); 
  2. widgetHidden連接到插槽以捕獲屏幕

     connect(Toolbox::getInstance(), &MyWidget::widgetHidden, this, &ClassName::onWidgetHidden); 

    其中MyWidgetToolbox::getInstance返回的類,而ClassNameProcessData所屬的類的名稱。

  3. 添加一個標志以了解是否是正確的捕獲時間,因為小部件可能以其他方式隱藏

     bool m_captureAllowed = false; 
  4. 實現onWidgetHidden插槽

     private slots: void onWidgetHidden() { if (m_captureAllowed) { m_captureAllowed = false; //screen capture stuffs } } 
  5. ProcessData設置標志

     void ProcessData() { m_captureAllowed = true; Toolbox::getInstance()->hide(); //I am trying to hide toolbox here } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM