我在我的一个函数中隐藏了一个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()返回时,工具箱才会隐藏。这导致了我捕获的屏幕有工具箱的问题。
有没有办法等待工具箱隐藏在Qt中?
发布于 2018-10-18 00:15:16
除了使用QApplication::processEvents之外,我建议您使用一个更优雅的解决方案:
Toolbox::getInstance返回的类的QWidget::hideEvent以发出信号,例如widgetHiddenwidgetHidden();
widgetHidden ){ QWidget::hideEvent(event);Q_EMIT widgetHidden();} signals: void QWidgetwidgetHidden to a slot截屏connect(Toolbox::getInstance(),&MyWidget::widgetHidden,this,&ClassName::onWidgetHidden);
其中,MyWidget是Toolbox::getInstance返回的类,ClassName是ProcessData所属的类的名称。
bool m_captureAllowed = false;
onWidgetHidden插槽私有插槽: void onWidgetHidden() { if ( m_captureAllowed ) {m_captureAllowed= false;//屏幕捕获信息}}
ProcessData中设置标志void ProcessData() { m_captureAllowed = true;工具箱::getInstance()->hide();//我试图在此处隐藏工具箱}
https://stackoverflow.com/questions/52856435
复制相似问题