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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QDialogButtonBox как отловить нажатие извне  (Прочитано 2769 раз)
qwyllum
Гость
« : Июнь 12, 2013, 11:36 »

Доброго времени суток! С-но, озадачился вопросом. Есть диалог, в котором у пользователя запрашиваются какие-то данные. После чего, из главной формы идет проверка:
Код:
if (Mydlg.exec() == QDialog::Accepted)// если пользователь подтвердил редактирование
    {
...
Такой метод работал как часы, пока однажды нечайно не удалил с панели диалога кнопки OK|Cancel. Спохватившись, перетянул новый ButtonBox на диалог, однако нажатие перестало отлавливаться. Конечно можно было бы забить, отменить последние действия и не парится, но мне стало интересно, как это все работает. Создал новый класс диалога с кнопками ОК-отмена, однако не нашел никакого кода, который бы что-то делал. Далее, удаляю ButtonBox и сразу же создаю новый с таким-же именем - больше нажатие на кнопку не работает. Вот и озадачился я - где же собака зарыта и как мне сделать, чтобы вышеописанный код снова заработал. Если кто подскажет, буду очень признатален Улыбающийся
Записан
mutineer
Гость
« Ответ #1 : Июнь 12, 2013, 11:42 »

Видимо родные кнопки связываются со слотами QDialog::accept () и QDialog::reject (), а при удалении эта связь исчезает
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Июнь 12, 2013, 11:57 »

void QDialogButtonBox::accepted () [signal]
void QDialogButtonBox::rejected () [signal]
Записан

Изучением 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
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Июнь 12, 2013, 13:22 »

Конечно можно было бы забить, отменить последние действия и не парится, но мне стало интересно, как это все работает. Создал новый класс диалога с кнопками ОК-отмена, однако не нашел никакого кода, который бы что-то делал. Далее, удаляю ButtonBox и сразу же создаю новый с таким-же именем - больше нажатие на кнопку не работает.

Когда ты создаёшь диалог с buttonbox, designer автоматом создаёт два соединения сигнал-слот, их ты можешь увидеть в редакторе сигналов-слотов. Когда ты удаляешь старый buttonbox и добавляешь свой, то соединения уже не будет, и его нужно добавить самому.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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