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

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

Спасибо

13

Решение

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

}
7

Другие решения

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

5

По вопросам рекламы [email protected]