Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаленный доступ к виджетам 
V
    Опции темы
gordmiand
Дата 4.3.2010, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



Допустим есть 3 формы в приложении (а вообще больше):
1.mainwindow – главная форма, в виджеты которой грузятся разные формы…
2.form2 – дочерняя форма – загр-ся во фрейм main_frame формы  mainwindow…
3.form3 – тоже загружается в mainwindow  и управляет работой формы form2…
Для загрузки формы (form2) в mainwindow создаю указатель на экземпляр класса form2 и в качестве параметра конструктора данного класса в качестве родителя указываю main_frame…

Вопрос: а как мне работать с виджетами формы form2 из формы form3:  что мне указывать в качестве параметра конструктора (т.е. родителя) при создании на форме form3 указателя на экземпляр класса form2? Какой-либо виджет формы form3 я указать не могу, так как тогда вся form2 загрузится в этот виджет на form3, что мне не надо (а надо просто иметь программный доступ к виджетам формы form2 в сигналах виджетов формы form3). Можно конечно и так поступить (загрузить form2 в form3), сделав затем данному экземпляру формы form2 hide(), но это как-то не очень хорошо…Если ничего не указывать в качестве параметра конструктора класса form2, то ничего не работает (см. экземпляр ss в архиве программы), а сделать конструктор у form2 без параметров я не могу, так как в качестве данного параметра я указываю виджет формы mainwindow, в который загружается форма form2 (см. п.2 выше)…В прилагаемом архиве программы нет form3, а есть попытка использовать указатель на экземпляр ss формы form2 без указания параметра…
Подскажите программно как лучше решить обозначенную выше проблему?



Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Proj5_03.rar 284,76 Kb
PM MAIL   Вверх
gordmiand
Дата 4.3.2010, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



неужели никто не знает? smile  я уже в этих наследованиях классов заблудился  smile  ...
помогите пожалуйста....
PM MAIL   Вверх
andrew_121
Дата 4.3.2010, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



посмотрел ваш код, и нифига не понял, что вы хотите сделать. из того что вы описали, только еще больше путаешься.
опишите в двух словах, что хотите сделать?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
gordmiand
Дата 4.3.2010, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



подредактировал прогу - см. архив....
главная цель - хочу иметь доступ к виджетам формы form2 из формы form3 (хочу по щелчку кнопки на form3 спрятать форму form2)...form2, form3 предварительно грузятся на форму mainwindow в различные виджеты...остальное - см. мое первое сообщение в данной теме...  
я свою задачу решил, но это реализовано из формы mainwindow (см. в ее конструкторе connect... ), что нежелательно, так как mainwindow используется только как контейнер для отображения сразу нескольких различных форм на одном экране, а все управляющие работой приложения программные коды должны быть в соответствующих формах (их сигналах и т.п.)...подскажите программно  (прямо в архиве программы) как решить сию задачку? (см. архив - я так понимаю, что из form3 надо как-то добраться до exz1 из MainWindow и через него действовать (делать ему hide), а может и не так: может как-то проще и лучше можно сделать, но кааак???)

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  Proj5_03_v2.rar 394,41 Kb
PM MAIL   Вверх
SABROG
Дата 5.3.2010, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(gordmiand @  4.3.2010,  23:08 Найти цитируемый пост)
что нежелательно, так как mainwindow используется только как контейнер для отображения сразу нескольких различных форм на одном экране, а все управляющие работой приложения программные коды должны быть в соответствующих формах (их сигналах и т.п.)


Если взять дизайнер, в котором открыт главный виджет, на нем 2 дочерних виджета, на каждом из дочерних виджетах по радиобатону. В визуальном режиме ты поключаешь сигнал clicked() одного к слоту setChecked() другого. Сохраняешь .ui форму. Собираешь программу. Появляется файл типа ui_*.cpp. Если внутрь заглянешь, то увидишь, что указатели "вяжутся" напрямую в setupUi(). Ни первый радиобатон подвязывает к себе второй, ни второй подвязывает первый в "соответствующих формах", а родитель устанавливает отношения между ними. Перекладывать родительские обязанности рожать детей, водить их в детсад, учить, кормить и т.п. на самих детей это неправильно, всем известно кто получается из беспризорников. Так что, если хочешь дать возможность одному из детей сделать "тёмную" (hide()) другому ребенку, то решать это должен родитель, в конструкторе или еще где, не важно. Он дал возможность, он также её и заберет, когда надо будет.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
gordmiand
Дата 5.3.2010, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



SABROG: ммм smile ...покажите пож-та на примере (исправьте пож-та в моем архиве программы - см. выше  Proj5_03_v2.rar...) smile 
PM MAIL   Вверх
SABROG
Дата 5.3.2010, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Ты правильно делал, когда вызывал connect() в конструкторе MainWindow.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
gordmiand
Дата 6.3.2010, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



пасиба за овтеты...пока все....
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.