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

【转】Qt多线程操作界面---在QThread更新QProgressBar

2015-10-07 15:08 435 查看
#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)));
render.test();
};
void OnNotify(int i)
{
progressBar->setValue(i);
};

};
#include "test.moc"
int main(int argc,char* argv[])
{
QApplication app(argc,argv);
MainWindow window;
window.show();
return app.exec();
}

http://blog.csdn.net/tingsking18/article/details/5096172
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: