Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

[solved]Manipulating multiple GUI-Objects at once



  • Hi there,

    I have an application with a bunch of lineEdits, that the user is supposed to fill with information.
    Then there is a shiny "Start the process"-Button.

    While the process is running it is pointless to enter new values.
    I want to make that as clear as possible, by blocking all Objects from human interference.

    Right now it is done like this:
    @ui->lineEdit_foo->setDisabled(true);
    ui->lineEdit_bar->setDisabled(true);
    ...@

    Is there a way to disable all of them in a less manual way?
    Something like:
    @for (MainWindow::allLineEdits) {
    disableThem(true);
    }@

    It is a small thing, but it would make my code a little more maintainable.

    Cheers,

    Schmaunz



  • I see several options

    Declare a QList or QVector of QLineEdit widgets and create them manually. Then you will be able to operate on the list of the line edits.

    Declare a QList or QVector of QLineEdit widgets. At the begging after ui->setupUi(this); put all ui->lineEdit_xxx to in the list of the line edit widgets. Then you will use that list to operate on all line edits.

    Create a signal disableAllEdits(bool). After ui->setupUi(this); connect all line edits slot setDisabled(bool) to the signal and emit disableAllEdits(true/false) when need to disable/enable the line edits.



  • From the "Documentation:":http://qt-project.org/doc/qt-5/qwidget.html#enabled-prop "Disabling a widget implicitly disables all its children."



  • Put all your lineedits in the same container/box. Then disable the container when the user clicks the button.



  • Sorry for the late answer and thanks for your replies.
    Disabling the container around the lineEdits works just fine :)



  • Please, place [SOLVED] in front of your first post if the answer was given. Saves us from reading!


Log in to reply