Qt编程求助:有没有啥类似QDialog::exec()之类的能阻塞程序的方法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt编程求助:有没有啥类似QDialog::exec()之类的能阻塞程序的方法?相关的知识,希望对你有一定的参考价值。

我的程序的底层算法执行到某一步时,需要等待用户输入数据,就是C++里要用cin的那些情况,

在Qt里
我可以设计一个用于输入的QDialog,然后在底层算法代码中调用QDialog::exec(),就会弹出一个QDialog,QDialog返回accepted或rejected之后QDialog::exec()才会退出。期间能阻塞用户与父窗口的交互,直到对话框关闭。

但问题是,我不想弹出一个QDialog,而是想在主窗口中处理,我想让用户在程序的主窗口中输入,然后点击一个QPushButton提交,有没有什么类似QDialog::exec()之类的能够阻塞程序,直到某个信号被发出,后才返回的函数?

也就是说,有没有什么办法弄一个模态QWidget,调用它的某些接口就可以阻塞程序运行,直到QWidget内部发出什么信号才继续程序?

望高手们赐教!

不明白需求。
Hack一下,照着dialog的方式做个消息循环。嵌套层数算好就行
另外,主窗口中显示,处理单开线程,做同步或者信号量等实现阻塞
参考技术A 你可以在widget中设置一个参数就可以了,如下
QWidgt *widget=new QWidget(0);
widget->setWindowModality(Qt::ApplicationModal);

以上是关于Qt编程求助:有没有啥类似QDialog::exec()之类的能阻塞程序的方法?的主要内容,如果未能解决你的问题,请参考以下文章

100分求助,Qt继承自QGraphicsItem的控件响应不了mousePressEvent事件怎么办?

Qt编程 treeWidge->findItems (),只能找到根节点,子节点找不到,怎么解决?或者用啥方法找到子节点?

QT是啥软件啊?

求助,在VS2013环境里搭载QT老是出现模块计算机类型“X86”与目标计算机类型“x64”冲突

有没有QT学的很厉害的,我也是个程序员但是刚刚工作没啥工作经验,希望拜一位高手为师,有的联系我

有啥方法可以通过 Qt Designer 添加 QSystemTrayIcon