QT>线程实例练习实例



QT>线程实例练习实例。

1,右击项目添加“新文件”
2,选择“C++类”–》“选择”
3,类名“myThread” 基类“QThread” 继承自QObject–》下一步–》完成
4,修改mythread.h文件如下
#ifndef MYTHREAD_H
#define MYTHREAD_H
#include
class myThread : public QThread
{
Q_OBJECT
public:
explicit myThread(QObject *parent = 0);
//mythread test
void stop();
signals:
public slots:
protected:
//mythread test
void run();
private:
//mythread test
volatile bool stopped;//使用volatile可以使的它在任何时候保持最新值
};
#endif // MYTHREAD_H
5,修改mythread.cpp文件如下
#include “mythread.h”
#include
myThread::myThread(QObject *parent) :
QThread(parent)
{
stopped = false;//初始化为false
}
//mythread test 停止进程
void myThread::stop()
{
stopped = true;
}
//mythread test 运行进程
void myThread::run()
{
#if 1
qreal i = 0;
while(!stopped)
{
qDebug()<<QString(“in myThread:%1″).arg(i++);
}
stopped = false;
#endif
#if 0
//system(“halt”);
#endif
}
6,在mainwindow.cpp函数中添加
#include “mythread.h” //线程测试头文件

//mythread test
myThread mythread;

//fileshare2 文件发送 “确认”按钮
void MainWindow::on_pushButton_fileShare2_send_ok_clicked()
{
//文件接收路径
//qDebug()<<tr(“文件接收路径:”).trimmed()<<ui->lineEdit_fileShare2_send_path->text().trimmed();
#if 1
//mythread test
mythread.start();
ui->lineEdit_fileShare2_send_path->setText(tr(“mythread 运行中。。。”).trimmed());
#endif
}
//fileshare2 文件发送 “取消”按钮
void MainWindow::on_pushButton_fileShare2_send_cancel_clicked()
{
//清空控件内容
//ui->lineEdit_fileShare2_send_path->clear();
#if 1
//mythread test
if(mythread.isRunning())
{
mythread.stop();
ui->lineEdit_fileShare2_send_path->setText(tr(“mythread停止!”).trimmed());
}
#endif
}