![]() |
|
![]() ![]() ![]() |
|
Elfet |
|
||||||||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Всем привет!
Помогите, пожалуйста, разобраться с формами в Qt. Создаю такую форму:
Затем вызываю её так:
А вот как проверить какая кнопка была нажата в форме? И как вернуть после закрытия формы какой-нибудь параметр? (Например текст) Пытаюсь во так вот сделать, но не выходит:
Заранее спасибо за помощь! Это сообщение отредактировал(а) Elfet - 19.11.2009, 13:54 |
||||||||
|
|||||||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
А кнопки кто на форму ложит? Это сообщение отредактировал(а) andrew_121 - 19.11.2009, 14:16 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
andrew_121, а они уже там были. Я её через QtDesigner создал.
|
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
||||
|
||||
null56 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Elfet, если ты пользуешь exec,
то ты (предполагаю, раз ты делал по умолчанию в дизайнере) можешь получить лишь два ответа
по умолчанию кнопки ok, возвращает значение Accepted, Cancel = Rejected Если ты создаешь собственный диалог со множеством кнопок, то за возвращаемый ответ придется отвечать самому через слоты или другие элементы управления |
||||
|
|||||
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
null56, ок. ясно. спасибо. А можно как-то самому возвращать? А то не охота через слоты.
|
|||
|
||||
null56 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
У диалогов, я так понимаю, что нет, такая у них природа
а вот если использовать наследника от QMessageBox, то тут есть более интересные методы понять, какая клавиша была нажата, пример из ассистента
|
||||
|
|||||
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
null56, QmessageBox понятно. А если я хочу свою кнопку разместить на форме?
|
|||
|
||||
null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
1) Для того, чтобы обработать нажатие кнопки на обычной форме, тебе нужен обработчик, которым выступает SLOT
2) К одному слоту ты можешь подключить несколько сигналов, хоть от всех кнопок на форме 3) В этом единственном слоте ты всегда можешь узнать, какой объект сгенерировал сигнал через функцию
приведя к типу QPushButton *, а там уже по каким - то ранее установленным признакам (например названию или еще какому - нибудь признаку, который ты можешь выставить, если создашь собственный класс PushButton наследник от QPushButton) сможешь узнать какая была нажата кнопка |
|||
|
||||
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
null56, ок, со слотами я понимаю как сделать. А как без них? Через возвращаемое значение формой возможно? Например как работают формы открытия и сохранения файла.
|
|||
|
||||
alex7annet |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 1.12.2011 Репутация: нет Всего: нет |
Знаю ответ конечно с опозданием, но сам наткнулся на подобную проблему. Суть проблемы в том, как все таки работают QMessage и конструкции типа
В fileName уже попадает путь файла, при этом не нужно присоединяться не к каким слотам;)) После небольшого изучения исходника QDialog::exec нашел для себя такой интересный класс, как QEventLoop. Вот рабочее решение на основе него:
Теперь я могу использовать это так:
Думаю это и есть решение поставленной выше задачи;))) |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |