QWidget调用show之后,如何不执行其它,等待关闭窗口再执行
时间: 2024-04-16 11:24:06 浏览: 522
要在QWidget调用show()之后等待窗口关闭再执行其他操作,您可以使用QObject的事件循环机制来实现。
您可以使用QEventLoop类创建一个事件循环,并在QWidget的关闭信号(例如`QCloseEvent`)触发时退出事件循环,然后继续执行后续代码。
以下是一个示例代码:
```cpp
#include <QApplication>
#include <QWidget>
#include <QEventLoop>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget widget;
widget.show();
QEventLoop eventLoop;
QObject::connect(&widget, &QWidget::destroyed, &eventLoop, &QEventLoop::quit);
eventLoop.exec();
// 窗口关闭后,继续执行后续代码
return app.exec();
}
```
在上述示例中,我们通过连接QWidget的destroyed信号与QEventLoop的quit槽,当窗口关闭时,就会触发destroyed信号,然后调用事件循环的quit()函数来退出事件循环。这样,在事件循环执行期间,程序将暂停在eventLoop.exec()处,直到窗口关闭为止。然后,您可以在注释部分继续执行后续代码。
请注意,在最后返回app.exec()之前,您可能需要进行其他必要的清理操作或处理退出事件。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)