Question

If I want to update a QProgressBar on the view layers from a loop on the logic layer (such as each iteration will update the progress bar), what is the proper way to do that?

Thanks

Was it helpful?

Solution

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

}

OTHER TIPS

QProgressBar has some public slots that are used for setting min and max values and current value. Increasing the current value causes the progress bar to move. You can emit a signal from the logic layer that is connected to "void setValue ( int value )" slot of QProgressBar. http://doc.qt.digia.com/qt/qprogressbar.html

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top