Russian Qt Forum
Май 17, 2024, 04:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как отменить закрытие диалога?  (Прочитано 3360 раз)
White Owl
Гость
« : Декабрь 31, 2014, 00:07 »

Есть диалоговое окошко с QDialogButtonBox.
Надо по нажатию Ok проверить несколько полей в диалоге и если они не прошли проверку показать соответствующую ругань и не закрывать диалог.

Сделал
Код:
void MyDialog::on_buttonBox_clicked( QAbstractButton *button) {
    if(button == buttonBox->button(QDialogButtonBox::Ok)) {
        if( форма заполнена неправильно) {
           QMessageBox::warning(...);
           return;
        }
        accept();
    }
}
Ругательное сообщение появляется, а по его закрытию - закрывается и весь диалог. Почему???
Что надо сделать чтобы он не закрывался если не вызван accept()?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4729



Просмотр профиля WWW
« Ответ #1 : Декабрь 31, 2014, 01:24 »

перегрузи метод accept() и вызывай метод суперкласса только в случае прохождения всех проверок
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
White Owl
Гость
« Ответ #2 : Декабрь 31, 2014, 01:44 »

в смысле, MyDialog::accept()? А сигналы от buttonBox вообще не трогать? мм.. Да, должно сработать. Спасибо.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4729



Просмотр профиля WWW
« Ответ #3 : Декабрь 31, 2014, 01:49 »

все верно.

если buttonBox создан в дизайнере, то там уже стоят коннекты на accept() и reject(). в противном случае надо самому законнектить.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Shadowgran
Гость
« Ответ #4 : Январь 08, 2015, 11:19 »

Where the service is available.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 23.