![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 12.03.2011
Сообщений: 96
|
![]()
есть форма, на ней есть кнопка, хочу нажать кнопку и чтобы показалась вторая форма, а первая закрылась.
сделал 2 класса, в первом классе один наследник кудиалог + интерфейс ui, во втором классе второй наследник кудиалог + интерфейс. есть 2 объекта этих классов, получается при сигнале нажатия кнопки в первом классе, должен вызваться слот, который должен отобразить интерфейс второго класса ob.show();. Но проблема в том, что я не знаю как мне в функции сигнала первого объекта вызвать метод второго объекта. PHP код:
PHP код:
PHP код:
PHP код:
PHP код:
PHP код:
По сути задача тривиальная как мир, показывается форма для ввода логина/пароля, и при нажатии кнопки проверяются данные и потом открывается вторая форма и скрывается первая. А не понимаю как сделать ![]() Последний раз редактировалось _KUL; 21.05.2012 в 21:12. |
![]() |
![]() |
![]() |
#2 |
C++ hater
Старожил
Регистрация: 19.07.2009
Сообщений: 3,333
|
![]()
2_KUL
способов мильен. вот один из них. Код:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 12.03.2011
Сообщений: 96
|
![]()
хм ... у вас тут явно определено.
а как функция класса 1 будет знать имя объекта класса 2 ? ведь слот 1 класса ограничен областью видимости функции-слота + паблик элементов данного класса, т.е. он не может обращаться к main.cpp чтобы спросить, есть ли там такой объект |
![]() |
![]() |
![]() |
#4 |
C++ hater
Старожил
Регистрация: 19.07.2009
Сообщений: 3,333
|
![]()
2_KUL
зачем диалогу что то знать о окне? диалог может только вернуть результат, accepted или rejected. на основании этих данных мы либо создаем, либо не создаем наше окно
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 12.03.2011
Сообщений: 96
|
![]()
а можете немного по подробнее описать пример?
|
![]() |
![]() |
![]() |
#6 |
C++ hater
Старожил
Регистрация: 19.07.2009
Сообщений: 3,333
|
![]()
2_KUL
ну тут такой тривиальный код, что рассматривать подробнее нечего. создаешь диалог. проверяешь, что он вернул. если нажали ok - должен вернуть accepted. нажали cancel - должен вернуть rejected (это поведение ты сам должен в своем диалоге задать, привязав сигналы clicked() кнопок ok и cancel к слотам диалога accept() и reject()). дальше в main проверяешь, что диалог вернул. вернул accepted, значит пользователь нажал ok, покажем основное окно. вернул rejected - пользователь нажал cancel, можно показать какое нить другое окно, или просто выйти из программы, как в моем примере. и диалог ничего не должен знать о каком то окне. он просто создается, показывается и возвращает результат своей работы. вопрос о создании или несоздании окна решается на более верхнем уровне (у меня - в функции main), а не внутри слота клика кнопки диалога ПС. может, так понятнее? хотя код тот же самый Код:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 23.05.2012 в 13:35. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 12.03.2011
Сообщений: 96
|
![]()
Спасибо, вроде понял, НО, опять возник ряд вопросов ...
получается мы accepted true сообщаем, что виджет отработал и теперь закрывается с параметром accepted = true ?! А если не нужно чтобы он закрывался, повторно предыдущему виджету делать show ? А если мне нужно в зависимости от кнопки, выводить разные окна? К примеру, я сделал так - объявил в классе переменную, которая хранит int, теперь смотрю, если был accepted == true и в переменной 1, то выводим окно 2, а если в переменной было 2, то окно 3. Но почему то при нажатии на кнопку 1 выводится нормально окно 2, а при нажатии на кнопку 2, не выводится окно 3, но если второй раз нажать на кнопку 2, то выводится окно 3. Почему так? dialog.h PHP код:
PHP код:
PHP код:
PHP код:
PHP код:
|
![]() |
![]() |
![]() |
#8 |
C++ hater
Старожил
Регистрация: 19.07.2009
Сообщений: 3,333
|
![]()
2_KUL
слишком сумбурно, читать тяжело. хочешь - звони в скайп часов в 9 по москве, объясню в тимвьювере
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 12.03.2011
Сообщений: 96
|
![]()
получается при конструкции
if ((w.exec() == QDialog::Accepted) { return a.exec(); } программа ждёт accepted == true и продолжит выполнение, только после его получения?! м при этом она ждёт его в первом вхождении if, несмотря на второй указатель равный 1, даже если он равен 2м ?! Когда мы нажимаем кнопку 2, первое условие становится ложным, т.к. указатель должен быть равным 1, а он равен 2м, поэтому он ждёт второй раз результата w.exec() во втором условии, как раз когда я второй раз нажимаю, условие становится истинным и выводится форма 3 ?! Такс ... а как сделать, чтобы ветвление это нормально работало? ![]() |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 12.03.2011
Сообщений: 96
|
![]()
pproger, в Хабаровске уже 4 часа ночи будет ... да и мика нет ...
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как наладить взаимодействие между формами программы | mixmon | Visual C++ | 6 | 26.06.2015 12:11 |
Взаимодействие между формами и БД | Lazio | Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) | 2 | 28.01.2012 10:39 |
Взаимодействие между формами в dll | RUSlan48 | Общие вопросы Delphi | 2 | 01.03.2011 22:40 |
организовать взаимодействие между формами, как? | lexluter1988 | Общие вопросы .NET | 1 | 21.05.2010 06:49 |
Взаимодействие между формами | Marsel737 | Общие вопросы Delphi | 5 | 16.11.2009 22:29 |