Безопасно ли применять run-time рефлексию, к стандартным диалоговым окнам Qt?
От: Chorkov Россия  
Дата: 09.12.22 11:54
Оценка:
Например:
        QString nn = ...;
        QInputDialog dlg(this);
        dlg.setLabelText( tr("Enter new name:") );
        dlg.setTextValue( nn );
        connect( &dlg, &QInputDialog::textValueChanged,
                 [&validateName,&dlg](const QString &text){
            QString err = validateName(text);
            // Эти строки вызывают сомнение :
            for(QPushButton*p_ok: dlg.findChildren<QPushButton*>() )
                if(p_ok->isDefault())
                {
                    p_ok->setEnabled( err.isEmpty() );
                    p_ok->setToolTip( err );
                }
        });
        if( dlg.exec() == QDialog::Accepted )
            return dlg.textValue();
        else
            return "";


Безопасно ли искать и менять свойства элементов управления на чужих диалоговых окнах, в том числе, на стандартных диалогах Qt?

С одной стороны, вдруг следуя стилю дизайна OS, окно будет переделано, и кнопка [Ok] окажется не QPushButton?
С другой стороны, зачем-то ведь нам дан класс QInputDialog, а не только статические функции типа getText?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.