- #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);
- };
- };
qt多线程编程之QThread
最新推荐文章于 2022-03-12 19:07:11 发布