产生一个子线程,遍历文件夹,然后将信息打印在主界面上。
1.子类化QThread可以产生一个新的线程,重构虚函数run()。子线程和主线程的通信是利用signal-slot机制,子线程将信息通过emit signal(“信息”)发送给主线程
class NewThread : public QThread
{ Q_OBJECT
public: NewThread(const QString strval) { filepath=strval; };
protected: void run();
private: QString filepath;
signals: void TestSignal(QString);
};
void NewThread::run() {
wchar_t path[260]={0};
filepath.toWCharArray(path);
emit TestSignal(filepath); }
2.主线程中先产生thread类,然后运行,在connect,在slot函数中对接收到的信息进行处理。
NewThread *playthread = new NewThread((const QString )s.path());
playthread->start();
connect(playthread, SIGNAL(TestSignal(QString)),this, SLOT(GetInfo(QString)));
3.在子线程中调用外部子函数,但是emit机制在外部函数中是不能使用的,怎样将子函数中的信息再传给子线程中emit?(用回调函数?)
时间: 2024-10-12 10:22:38