我有一个类,它在单独的线程中启动任务:
class SomeTask : public QObject, QRunnable
{
Q_OBJECT
signals:
void updateProgressBar(int, int);
public:
SomeTask(int, QWidget*);
void run();
void runLongOperation(QString)
{
QThreadPool::globalInstance()->start(this);
}
};
在MainWindow中,我为每个长计算创建新的QProgressBar
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
private:
QList<QProgressDialog*> m_listProgressDialogs;
public slots:
void handle(QString)
{
m_listProgressDialogs.push_back(new QProgressDialog("Task in progress...", "Cancel", 0, 100));
m_listProgressDialogs.at(m_listProgressDialogs.size()-1)->show();
SomeTask *task = new SomeTask(m_listProgressDialogs.size()-1, this);
QObject::connect(mv, SIGNAL(updateProgressBar(int)), this, SLOT(setValueProgressBar(int)));
task->runLongOperation(......);
}
void setValueProgressBar(int);
};
是否可以为每个长任务创建新的QProgressBar,并且每个任务都会发出信号以在特定的QProgressBar中设置值。将QProgressBar *存储在QList中是否很好,就像我写的那样?