2

我有课,在单独的线程中启动任务:

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 中好吗?

4

0 回答 0