| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Результат работы QDialog |
| Автор: andrew_121 23.8.2009, 15:05 | ||||||
| В общем наследуюсь от QDialog. На форме много кнопок и всякой ерунды. Но особо важны две кнопки, Apply, Cancel. Так как мне нужно знать результат работы диалога. В диалоге делаю это следующим образом:
В основной программе следующим:
Но почему-то всегда возвращает QDialog::Rejected. Я понимаю что можно сделать это иначе, но интересует почему так не работает. В документации сказано:
|
| Автор: Любитель 23.8.2009, 15:52 |
| Используй метод done или вручную хайди диалог перед закрытием. В QDialog переопределён closeEvent, для видимого диалога он автоматом вызывает reject. |
| Автор: andrew_121 23.8.2009, 16:35 |
| Любитель, Спасибо! Работает! Но я все равно не понял, тот код что я привел так и должен работать, или это косяк в Qt или в документации к Qt ? |
| Автор: Любитель 23.8.2009, 20:50 |
| andrew_121, ну.. считается, что если ты закрываешь диалог и он при этом видим - то это означает reject Добавлено через 4 минуты и 16 секунд Да, кстати в твоём случае проще будет коннектить сигналы clicked кнопок на слоты accept и reject. И (не совсем в тему, но всё же) - лучше использовать QDialogButtonBox (или как-то так). Тогда лэйаут кнопок будет подстраиваться под среду юзера: свой для винды, свой для мака, свой для гнома, свой для КДЕ. |
| Автор: Любитель 24.8.2009, 21:27 |
| Посмотри доки по QDialogButtonBox - там показано. Например, в гноме и на маке кнопка ОК будет слева, а Cancel справа. А в КДЕ и винде - наоборот. И это касается всех стандартных кнопок. |
| Автор: andrew_121 24.8.2009, 22:40 |
| Любитель, Ах вот ты о чем. Да, конечно так удобнее. |