Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the proper way to set QProgressBar to update from the logic layer?

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

like image 334
GoldenAxe Avatar asked Jan 09 '13 07:01

GoldenAxe


2 Answers

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

}
like image 50
elsamuko Avatar answered Nov 11 '22 13:11

elsamuko


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

like image 5
fatma.ekici Avatar answered Nov 11 '22 12:11

fatma.ekici