Подтвердить что ты не робот

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

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

Спасибо

4b9b3361

Ответ 1

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();

}

Ответ 2

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