是否可以创建许多QProgressDialogs对象,这将显示进度不同的长操作?

时间:2017-07-19 19:43:51

标签: c++ qt qlist qprogressbar

我有一个类,它在单独的线程中启动任务:

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中是否很好,就像我写的那样?

0 个答案:

没有答案