Как правильно настроить обновление QProgressBar с уровня логики?

Если я хочу обновить QProgressBar на слоях представления из цикла на логическом уровне (например, каждая итерация будет обновлять индикатор выполнения), каков правильный способ сделать это?

Спасибо

2 ответа

Решение
class LogicClass : public QObject
{
    Q_OBJECT
public:
    explicit LogicClass(QObject *parent = 0);
    int max(){ return 100; }
    int min(){ return 0; }
    void emit50(){ emit signalProgress(50); }

signals:
    void signalProgress(int);

public slots:

};


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    LogicClass logic;

    ui->progressBar->setMaximum( logic.max() );
    ui->progressBar->setMinimum( logic.min() );
    connect( &logic, SIGNAL( signalProgress(int) ), ui->progressBar, SLOT( setValue(int) ) );

    logic.emit50();

}

QProgressBar имеет несколько открытых слотов, которые используются для установки минимальных и максимальных значений и текущего значения. Увеличение текущего значения вызывает перемещение индикатора выполнения. Вы можете излучать сигнал из логического слоя, который подключен к слоту void setValue ( int value) QProgressBar. http://doc.qt.digia.com/qt/qprogressbar.html

Другие вопросы по тегам