线程-问题与它(初学者)
QThread - problems with it (beginner)
我尝试使用QThread,但我不能这样做:(我的示例线程:
#include "worker.h"
#include "mainwindow.h"
#include <QDebug>
Worker::Worker() {}
Worker::~Worker() {
qDebug() << "Worker ends.";
}
void Worker::run() {
qDebug() << "Worker start.";
sleep(2);
emit finished();
}
代码on_btnStart_clicked():
Worker *worker = new Worker;
QThread *workerThread = new QThread(this);
connect(workerThread, SIGNAL(started()), worker, SLOT(start()));
connect(workerThread, SIGNAL(finished()), worker, SLOT(quit()));
worker->moveToThread(workerThread);
workerThread->start();
Worker启动,但从未结束(如果我关闭应用程序,我得到QThread: Destroyed while thread is still running
。)另一个问题-我如何在线程和应用程序之间传输数据?我想使用QThread为QLabel(示例:计时器)。我找不到任何好的教程,我可以编译没有问题。有人能帮我吗?
而且,如果我可以问,我如何启动线程像onCreate()的形式?我想创建一个简单的计时器来计算应用程序运行的时间。
关于
你应该通读一下这篇文章。
查看Qt 4.8 QThread文档的第一个代码示例。它有许多行代码,只是为了在线程中运行一些代码。甚至还有一个漏洞:QThread永远不会退出并被销毁。
提交的补丁已被接受,但他转发给您的href链接仍然显示旧代码。
这个补丁片段diff在右侧显示了有效的方法。
给出了对QThread
进行子类化和使用QObject->Worker
的两种方法您可以使用它作为基础代码的示例。正如他在博客中提到的那样,应用适合您需求的方法。
相关文章:
- 嵌套for循环C++的问题(初学者)
- 初学者问题:如何使用这些晦涩难懂的命令,例如C++中的'RenderWindow'
- 初学者问题:如何访问此变量?
- 您好,我是C++初学者,有这种问题.它给了我倍增的错误
- 初学者问题:C++指针/地址 - 和变量之后不是以前?
- 初学者关于数组和指针的问题
- 模板编程初学者问题
- 在 Rcpp-Function 中使用布尔向量的子集(Rcpp 初学者的问题..)
- 我在C 初学者中发现了无限的循环问题
- 在C 中的初学者,我面临此问题错误C3867
- 有关循环冗余代码的初学者问题
- 初学者问题 - 致命错误LNK1561:必须定义入口点
- 关于编译器错误的初学者问题
- C++ 的初学者问题
- C++ 移动黑白函数的初学者问题
- 2个关于c++的初学者问题
- Qt C++简单的应用程序初学者问题
- 初学者问题:当对象位于向量中时,为什么我无法访问对象的成员?
- 如何使用这个 C++ 模板函数.简单的初学者问题
- 初学者问题生成文件不起作用