Проверить форму QT-Dialog и повторно использовать - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть QDialog со многими QLineEdit и многими QComboBox для компиляции формы. Я хочу найти хороший способ и повторно использовать, чтобы проверить, все ли поля заполнены. Я думаю, чтобы создать указатели QList QWidgets и с foreach проверить все. Но у класса QWidget не было функции text-> isEmpty (). Кто-то мог бы мне подсказать?

1 Ответ

0 голосов
/ 29 апреля 2020

Если у вас есть контейнер, в котором хранятся указатели виджетов формы, вы можете реализовать функцию, которая перебирает виджеты, проверяет тип виджета и проверяет определенное свойство, в зависимости от этого типа. Например:

bool isFormComplete(const QList<QWidget *> &widgets)
{
    for ( auto w : widgets ) {
        if ( auto lineEdit = qobject_cast<QLineEdit *>(w) ) {
            if ( lineEdit->text().isEmpty() ) {
                // An empty edit box.
                return false;
            }
        } else  if ( auto combo = qobject_cast<QComboBox *>(w) ) {
            if ( combo->count() == 0 ) {
                // An empty combo box.
                return false;
            }
        }
    }
    return true;
}

, где я использую функцию qobject_cast() для проверки типов виджетов.

...