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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QDialog и его buttonbox  (Прочитано 5052 раз)
Vlad
Гость
« : Ноябрь 02, 2009, 14:55 »

 Есть QDialog, на нем его стандартные кнопки Cancel OK. При нажатии ОК нужно сначала совершить некие действия, и после их правильного выполнения делать стандартную обработку ОК. Я делаю так - перевесил сигнал accepted() на свой слот. Как мне теперь добраться до слота accept() кнопки ОК? Если делать так - нажимается ОК, я делаю свои дела и потом вешаю сигнал accepted() на слот accept(), то нажимать кнопку надо 2 раза, что неприемлимо. Либо пробую напрямую вызвать accept(), но он protected. Может можно по другому еще как-то?
Записан
BRE
Гость
« Ответ #1 : Ноябрь 02, 2009, 14:59 »

Слот accept() виртуальный, в своем диалоги можно его перекрыть и выполнять необходимые действия и в конце звать QDialog::accept().

Код:
class MyDialog : public QDialog
{
protected slots:
virtual void accept()
{
// свои действия

QDialog::accept();
}
};
Записан
Vlad
Гость
« Ответ #2 : Ноябрь 03, 2009, 01:19 »

Спс за подсказку, только приходится в конце писать QDialog::close(); вместо QDialog::accept(); - иначе слот сам себя вызывать начинает  Шокированный
Записан
spectre71
Гость
« Ответ #3 : Ноябрь 03, 2009, 08:55 »

... только приходится в конце писать QDialog::close(); вместо QDialog::accept(); - иначе слот сам себя вызывать начинает  Шокированный

С какой стати? Ерунда!
Записан
Vlad
Гость
« Ответ #4 : Ноябрь 03, 2009, 16:37 »

Хз, по крайней мере у меня действие напоминающее это было.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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