<1> 在头文件threaddlg.h声明用于界面显示所需的控件,其代码如下:
- #ifndef THREADDLG_H
- #define THREADDLG_H
-
- #include
- #include
- #include "workthread.h"
- #define MAXSIZE 5
-
- class ThreadDlg : public QDialog
- {
- Q_OBJECT
-
- public:
- ThreadDlg(QWidget *parent = 0);
- ~ThreadDlg();
- private:
- QPushButton *startBtn;
- QPushButton *stopBtn;
- QPushButton *quitBtn;
- public slots:
- void slotStart();
- void slotStop();
- private:
- WorkThread *workThread[MAXSIZE];
- };
-
- #endif // THREADDLG_H
<2> 在源文件“threaddlg.cpp的构造函数中,完成各个控件的初始化工作其具体代码如下:
- #include "threaddlg.h"
- #include
-
- ThreadDlg::ThreadDlg(QWidget *parent)
- : QDialog(parent)
- {
- setWindowTitle(tr("线程"));
-
- startBtn = new QPushButton(tr("开始"));
- stopBtn = new QPushButton(tr("停止"));
- quitBtn = new QPushButton(tr("退出"));
-
- QHBoxLayout *mainLayout = new QHBoxLayout(this);
- mainLayout->addWidget(startBtn);
- mainLayout->addWidget(stopBtn);
- mainLayout->addWidget(quitBtn);
-
- connect(startBtn,SIGNAL(clicked()),this,SLOT(slotStart()));
- connect(stopBtn,SIGNAL(clicked()),this,SLOT(slotStop()));
- connect(quitBtn,SIGNAL(clicked()),this,SLOT(close()));
- }
-
- ThreadDlg::~ThreadDlg()
- {
-
- }
-
- void ThreadDlg::slotStart()
- {
- for(int i=0;i
- {
- workThread[i]=new WorkThread();
- }
- for(int i=0;i
- {
- workThread[i]->start();
- }
- startBtn->setEnabled(false);
- stopBtn->setEnabled(true);
- }
-
- void ThreadDlg::slotStop()
- {
- for(int i=0;i
- {
- workThread[i]->terminate();
- workThread[i]->wait();
- }
- startBtn->setEnabled(true);
- stopBtn->setEnabled(false);
- }
<3> 以上完成了界面的设计及调用线程实例,下面的内容是具体的功能实现。
<3-1>在头文件“workthread.h”中,工作线程WorkThread类继承自QThreao类。重新实现run()函数。其具体代码如下:
- #ifndef WORKTHREAD_H
- #define WORKTHREAD_H
-
- #include
-
- class WorkThread : public QThread
- {
- Q_OBJECT
- public:
- WorkThread();
- protected:
- void run();
- };
-
- #endif // WORKTHREAD_H
<3-2> 在源文件“workthread.cpp”中添加具体实现代码如下:
- #include "workthread.h"
- #include
-
- WorkThread::WorkThread()
- {
- }
-
- void WorkThread::run()
- {
- while(true)
- {
- for(int n=0;n<10;n++)
-
-
相关阅读:
怎么用光碟重装系统
JSD-2204-酷莎商城(管理员模块)-密码加密-Day10
#案例:演示键盘操作!
企业多点组网最直接、最简单的方案是什么?
Easily Compare and Deploy SQL Database Changes
JVM——7.类加载与类加载器
Ubuntu 创建并发布 Django 项目
【OpenCV】图像基本操作
连续六个季度实现盈利改善,达达集团内外双重确定性凸显
JAVA代码审计-XSS漏洞分析
-
原文地址:https://blog.csdn.net/liangfei868/article/details/134325057