您的位置:首页 > 编程语言 > Qt开发

qt多线程编程之QThread

2015-09-09 13:43 453 查看
#include <QApplication>
#include <QThread>
#include <QMainWindow>
#include <QProgressBar>
#include <QPushButton>
class RenderThread : public QThread
{
Q_OBJECT
signals:
void notify(int); //参数可以自己定义,个数不限,但是要注意和接受的曹的要一致

public:
RenderThread(QObject *parent = 0): QThread(parent)
{

};
void test()
{

start(HighestPriority);
};
protected:
void run()
{
int i =0;
while (i<101)
{
msleep(50);
i++;
emit notify(i);
}

};
};

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = 0)
{
resize(600, 400);
centralWidget = new QWidget(this);
progressBar = new QProgressBar(centralWidget);
progressBar->setGeometry(QRect(130, 180, 321, 23));
progressBar->setValue(0);
pushButton = new QPushButton("test",centralWidget);
pushButton->setGeometry(QRect(110, 100, 75, 23));
QObject::connect(pushButton, SIGNAL(clicked()), this, SLOT(OnClicked()));
this->setCentralWidget(centralWidget);
};
~MainWindow(){};

private:
QProgressBar *progressBar;
QPushButton *pushButton;
QWidget *centralWidget;
RenderThread render;
public slots:
void OnClicked()
{
connect(&render,SIGNAL(notify(int)),this,SLOT(OnNotify(int))); //要注意参数一致,在现成类的头上一定要有:signal:这个标志啊

render.test();
};
void OnNotify(int i)
{
progressBar->setValue(i);
};

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: