0
点赞
收藏
分享

微信扫一扫

Qt 线程

洲行 04-12 06:00 阅读 2

一、继承QThread,实现void run() 函数。

Worker定义:

class Worker:public QThread
{
public:
    Worker();
    void run() override;
};
void Worker::run()
{
    while(1)
    {
        qDebug()<<"run:"<<currentThreadId();
        sleep(2);
    }
}

二、继承QObject,调用moveToThread函数

这种方式槽函数被信号触发时,将在线程中执行。

该类的事件处理函数将全部在该线程中执行。

Worker定义:


class Worker:public QObject
{
public:
    Worker();
public slots:
    void doWork();
};
void Worker::doWork()
{
    qDebug()<<QThread::currentThreadId()<<endl;
}

mainWindow中使用Worker:

    Worker* w = new Worker;
    QThread* t = new QThread;
    w->moveToThread(t);
    t->start();

    //必须使用connect,不能直接调用doWork()
    connect(this,&MainWindow::mySignal,w,&Worker::doWork);

    qDebug()<<"mainwindow:"<<QThread::currentThreadId()<<endl;
    emit mySignal();
举报

相关推荐

0 条评论