QT开发中文网

QT C++ 演示线程的使用

您好,下面是一个简单的演示如何使用线程来处理耗时操作的例子:

#include <QThread>
#include <QDebug>

// 定义一个继承自 QThread 的线程类
class MyThread : public QThread {
    Q_OBJECT

public:
    void run() override {
        // 在此处编写需要在线程中执行的代码
        for (int i = 0; i < 10; i++) {
            qDebug() << "Running in thread: " << QThread::currentThreadId();
            msleep(1000); // 线程休眠1秒钟,模拟耗时操作
        }
    }
};

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

    // 创建线程对象,并启动它
    MyThread thread;
    thread.start();

    // 主线程继续执行其他任务
    for (int i = 0; i < 5; i++) {
        qDebug() << "Running in main thread: " << QThread::currentThreadId();
        QThread::msleep(500); // 主线程休眠500毫秒,模拟其他任务
    }

    return app.exec();
}

上面的例子中,我们首先定义了一个继承自 QThread 类的 MyThread 类,并在其中重载了 run() 函数。在 run() 函数中编写需要在线程中执行的代码。

然后,在主函数中创建了一个 MyThread 对象,并调用其 start() 函数来启动该线程。同时,在主函数中也有一些其他任务需要执行,通过主线程的循环来模拟这些任务。

在运行程序时,我们可以看到控制台输出的信息。其中 Running in thread: 的输出表示当前正在执行的是线程中的代码,Running in main thread: 的输出则表示当前正在执行的是主函数中的其他任务。

需要注意的是,在多线程编程中,如果需要在子线程中更新 UI 界面或者与其他对象进行交互,需要使用信号与槽机制或者 QtConcurrent 等方式来实现。此处仅演示了简单的线程创建和执行流程。

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?