QT开发中文网

编写代码,要延迟执行1s后关闭QWidget,使用QEventLoop类来创建一个嵌套事件循环对象来实现

下面是一个使用QEventLoop类创建嵌套事件循环对象来延迟关闭QWidget的示例代码:

#include <QApplication>
#include <QWidget>
#include <QTimer>
#include <QEventLoop>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget widget;
    widget.setWindowTitle("Delayed Close Example");
    widget.show();

    QTimer::singleShot(1000, [&]() {
        QEventLoop loop;
        QTimer::singleShot(0, &loop, SLOT(quit()));  // 触发退出信号,结束嵌套事件循环
        loop.exec();  // 进入嵌套事件循环,等待直到quit()被调用
        widget.close();
    });

    return app.exec();
}

在这个示例中,首先创建了一个QWidget窗口,并设置了标题并显示。然后,通过QTimer::singleShot函数设置一个1秒的定时器,在定时器触发后进入lambda函数内部。

在lambda函数内部,我们创建了一个QEventLoop对象loop,并将其与一个立即触发的定时器连接起来。这个立即触发的定时器会在进入嵌套事件循环后立即触发quit()槽函数,从而结束嵌套事件循环。

接着,我们调用loop.exec()进入嵌套事件循环状态,并等待直到quit()被调用才会继续执行后续代码。当quit()被调用后,程序会关闭QWidget窗口。

最后,通过app.exec()启动Qt应用程序的主事件循环。

这样,QWidget窗口会在延迟1秒后关闭。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=10154

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?