#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();
}