#ifndef LOADPGS_H
#define LOADPGS_H
#include<QRunnable>
#include<QString>
#include<QObject>
class LoadPGS :public QObject,public QRunnable
{
Q_OBJECT
public:
explicit LoadPGS(QString pgsFileName);
virtual void run() override;
signals:
void signal_load_finished();
private:
QString pgsFileName;
};
#endif
#include "loadpgs.h"
#include<QDebug>
#include<QThread>
LoadPGS::LoadPGS(QString path): pgsFileName(path)
{
}
void LoadPGS::run()
{
for (int i=0;i<20;++i) {
QThread::msleep(100);
qDebug()<<"QRunnable: "<<i;
}
emit signal_load_finished();
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include"loadpgs.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
LoadPGS* pLoad;
void slot_loadFinished();
private slots:
void on_pushButtonstart_clicked();
private:
Ui::MainWindow *ui;
};
#endif
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QThreadPool>
#include<QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QString pgsPath=qApp->applicationFilePath();
pLoad=new LoadPGS(pgsPath);
connect(pLoad,&LoadPGS::signal_load_finished,this,&MainWindow::slot_loadFinished);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::slot_loadFinished()
{
qDebug()<<"Load finished!";
}
void MainWindow::on_pushButtonstart_clicked()
{
if(Q_NULLPTR==pLoad)
{
return;
}
if(!QThreadPool::globalInstance()->tryStart(pLoad))
{
return;
}
}