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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вызов функции при обработке ok  (Прочитано 4727 раз)
lokoArt
Гость
« : Января 16, 2010, 14:48 »

У меня есть диалог, на нём есть QDialogButtonBox, когда на нём нажимается кнопка OK, нужно выполнить метод некого класса. Я поступил так, создал слот в классе этого диалога, потом создал коннект при нажатии на Ok, а в этом слоте вызываю метод некоторого класса. Вот вопрос: можно ли сделать тоже самое только без создания слота?
« Последнее редактирование: Января 16, 2010, 15:52 от lokoArt » Записан
ilot
Гость
« Ответ #1 : Января 16, 2010, 15:02 »

Но теперь мне просто интересно, всё таки как создать глобальнуб переменную типа QWidget?
Ну как вариант можно объявить глобальный указатель QWidget* pwgt = 0;
Записан
zenden
Гость
« Ответ #2 : Января 16, 2010, 16:09 »

и всё же не стоит так втихаря редактировать изначальные сообщения
Записан
Marat(Qt)
Гость
« Ответ #3 : Января 16, 2010, 16:13 »

если метод некого класса является слотом, или можно сделать его слотом, то можно сделать коннект слота некого класса с сигналом кнопки ок.
ещё есть вероятность, что вы вызываете диалог командой exec, и после нажатия на ok ваш диалог закрывается, тогда можно оформить это так:
Код:
if(MyDialog.exec()==1)NekiyClass::method();
Записан
lokoArt
Гость
« Ответ #4 : Января 16, 2010, 16:15 »

и всё же не стоит так втихаря редактировать изначальные сообщения

да...я тоже об этом подумал((( я думал можно будет все сообщения удалить, а нельяз(((
Записан
lokoArt
Гость
« Ответ #5 : Января 16, 2010, 16:41 »

если метод некого класса является слотом, или можно сделать его слотом, то можно сделать коннект слота некого класса с сигналом кнопки ок.
ещё есть вероятность, что вы вызываете диалог командой exec, и после нажатия на ok ваш диалог закрывается, тогда можно оформить это так:
Код:
if(MyDialog.exec()==1)NekiyClass::method();

эх вероятности нету...я вызываю методом show(). А как лучше вызывать?
Записан
Marat(Qt)
Гость
« Ответ #6 : Января 16, 2010, 16:55 »

нельзя вызывать методом show, это же диалог. Надо методом exec вызывать, он вернет сообщение о том, нажал ли пользователь OK или Отмену. В этом случае можно использовать приведенную выше конструкцию.
« Последнее редактирование: Января 16, 2010, 16:58 от Marat(Qt) » Записан
BlackTass
Гость
« Ответ #7 : Января 16, 2010, 16:57 »

нельзя вызывать методом show, это же диалог. Надо методом exec вызывать, он вернет сообщение о том, нажал ли пользователь OK или Отмену.
ну если диалог немодальный, то как раз show() и нужен. ТС не написал же какой у него диалог
Записан
Marat(Qt)
Гость
« Ответ #8 : Января 16, 2010, 17:03 »

нельзя вызывать методом show, это же диалог. Надо методом exec вызывать, он вернет сообщение о том, нажал ли пользователь OK или Отмену.
ну если диалог немодальный, то как раз show() и нужен. ТС не написал же какой у него диалог
Ну вообще я зря так категоричен, тут придется согласиться. Но суть диалога в том чтобы быть модальным. Т.о. учитывая ваше замечание, стоит лишь посоветовать ТС прочитать документацию по QDialog::exec() или литературу по диалогам в Qt
Записан
BlackTass
Гость
« Ответ #9 : Января 17, 2010, 23:15 »

Ну вообще я зря так категоричен, тут придется согласиться. Но суть диалога в том чтобы быть модальным. Т.о. учитывая ваше замечание, стоит лишь посоветовать ТС прочитать документацию по QDialog::exec() или литературу по диалогам в Qt
Суть диалога в том что он может быть модальным ) немодальные диалоги хоть и реже, но все же бывают нужны
Записан
DS_tm
Гость
« Ответ #10 : Января 18, 2010, 12:40 »

Суть диалогового окна, позволять пользователю взаимодействовать с приложением, от сюда и название. А каким это окно будет, зависит уже от его целей.

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


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