首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何等待窗口在Qt中被隐藏?

如何等待窗口在Qt中被隐藏?
EN

Stack Overflow用户
提问于 2018-10-17 21:45:29
回答 1查看 436关注 0票数 0

我在我的一个函数中隐藏了一个Qt工具箱窗口。在隐藏工具箱窗口后,我需要在函数中执行一些屏幕捕获内容。

代码语言:javascript
复制
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()返回时,工具箱才会隐藏。这导致了我捕获的屏幕有工具箱的问题。

有没有办法等待工具箱隐藏在Qt中?

EN

回答 1

Stack Overflow用户

发布于 2018-10-18 00:15:16

除了使用QApplication::processEvents之外,我建议您使用一个更优雅的解决方案:

  1. 重新实现Toolbox::getInstance返回的类的QWidget::hideEvent以发出信号,例如widgetHidden

widgetHidden();

  • Connect : void hideEvent(QHideEvent * widgetHidden ){ QWidget::hideEvent(event);Q_EMIT widgetHidden();} signals: void QWidgetwidgetHidden to a slot截屏

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

其中,MyWidgetToolbox::getInstance返回的类,ClassNameProcessData所属的类的名称。

  • 会添加一个标志,以了解捕获时机是否正确,因为小部件可能会以其他方式隐藏

bool m_captureAllowed = false;

  • Implement onWidgetHidden插槽

私有插槽: void onWidgetHidden() { if ( m_captureAllowed ) {m_captureAllowed= false;//屏幕捕获信息}}

  • ProcessData中设置标志

void ProcessData() { m_captureAllowed = true;工具箱::getInstance()->hide();//我试图在此处隐藏工具箱}

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52856435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档