Включение кнопки, только если два поля заполнены - PullRequest
1 голос
/ 07 июля 2011

Как реализовать такую ​​функциональность, чтобы кнопка включалась только в том случае, если два строковых редактора заполнены текстом?

Ответы [ 2 ]

5 голосов
/ 07 июля 2011

Вы хотите отслеживать изменения обеих строк:

connect(lineEdit1, SIGNAL(textChanged(const QString&)), SLOT(checkShouldEnableButton()));
connect(lineEdit2, SIGNAL(textChanged(const QString&)), SLOT(checkShouldEnableButton()));

И затем вам нужно включить / отключить кнопку, когда текст присутствует в обоих:

void YourWidget::checkShouldEnableButton() {
    button->setEnabled(
        !lineEdit1->text().isEmpty() && !lineEdit2->text().isEmpty()
        );
}

Если вызаботясь только о пользовательских изменениях, вы можете использовать сигнал textEdited (const QString &) вместо сигнала textChanged .

1 голос
/ 07 июля 2011

Подключите сигнал обоих виджетов textChanged к одному и тому же слоту, который вызывает

button -> setEnabled (edit1 -> text .size () && edit2 -> text .size ())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...