#pragma once #include #include #include #include #include #include "GroupView.h" class Progresser : public QObject { Q_OBJECT public: explicit Progresser(QObject *parent = 0) : QObject(parent) { QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(timeout())); timer->start(50); } QStandardItem *addTrackedIndex(QStandardItem *item) { item->setData(1000, CategorizedViewRoles::ProgressMaximumRole); m_items.append(item); return item; } public slots: void timeout() { foreach(QStandardItem * item, m_items) { int value = item->data(CategorizedViewRoles::ProgressValueRole).toInt(); value += qrand() % 3; if (value >= item->data(CategorizedViewRoles::ProgressMaximumRole).toInt()) { item->setData(item->data(CategorizedViewRoles::ProgressMaximumRole).toInt(), CategorizedViewRoles::ProgressValueRole); } else { item->setData(value, CategorizedViewRoles::ProgressValueRole); } } } private: QList m_items; };