|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.09.2012, 17:59 | #1 |
Регистрация: 04.09.2012
Сообщений: 5
|
Доступ между виджетами Qt
Здравствуйте.
Есть MainWindow и много виджетов которые встраиваются друг в друга(и соответственно в MainWindow). Я хотел бы узнать, как вы осуществляете доступ по этой иерархии. Единственное, что нашел - это использовать parent. Но есть ли другой способ, более удобный? просто, если чуть-чуть изменить структуру встраивания виджетов друг в друга, то придется править много кода, который получает ссылку на нужный виджет через parent`ов и приведение типов. Может держать обычный массив с указателями вне классов и в каждом конструкторе заносить ссылку на себя в этот массив? и использовать extern чтобы получить к нему доступ. Буду благодарен за помощь. |
26.12.2012, 13:26 | #2 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Привет, DDoSed
А что значит "много виджетов которые встраиваются друг в друга"? По мне, есть главное окно MainWindow и из него организован доступ к диалоговым окнам, на которых не так много виджитов можно расположить. Под виджитами вы же подразумеваете элементы пользовательского интерфейса? Ну там: кнопки, чекбоксы и т.д. Вы бы не могли какой-нибудь рабочий проект к своему сообщению прикрепить, чтобы можно было запустить у себя и посмотреть, как вы организуете проект. Проблема, скорее всего, в неправильной организации проекта. Иван |
26.12.2012, 22:38 | #3 |
Регистрация: 04.09.2012
Сообщений: 5
|
Стыдно показывать такой плохой код) у меня нету знаний по правильному проектированию программ.
Касательно темы: например, хотелось бы при изменении в настройках изменять сразу информацию на startingwidget, сейчас это сделано с помощью коннекта к слоту mainwindow (decanat.cpp 49строчка), который в свою очередь вызывает метод startingwidget`a. в идеале хотелось бы постоянно(везде) иметь доступ к указателю на startingwidget. очень хотелось бы услышать любую конструктивную критику и советы по возможным исправлениям. спасибо. |
27.12.2012, 10:23 | #4 | |
Пользователь
Регистрация: 25.12.2012
Сообщений: 29
|
Цитата:
|
|
27.12.2012, 12:48 | #5 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
|
27.12.2012, 13:44 | #6 |
Регистрация: 04.09.2012
Сообщений: 5
|
тем что нужно осуществлять много коннектов, дочернее окно->главное->другое дочернее->его дочернее.
хочется чтобы в конструкторе создаваемого объекта сделать только один коннект вместо коннекта всей иерархии. |
27.12.2012, 14:07 | #7 |
Пользователь
Регистрация: 25.12.2012
Сообщений: 29
|
т.е. ты хочешь что бы при изменении в дочернем окне обновлялось родительское? Или ещё и все дочерние?
зы В Qt вроде не рекомендуется использовать исключения. |
01.01.2013, 19:32 | #8 |
Регистрация: 04.09.2012
Сообщений: 5
|
я хочу, чтобы, как бы глубоко я не залез по иерархии виджетов, я всегда имел доступ к методам, например, главного окна. но без построения кучи коннектов.
предположим, я на главном окне имею виджет с информацией. и еще один виджет. тот в свою очередь иногда создает свой диалог, а этот диалог включает в себя еще какой нибудь виджет и так далее. так вот я хочу не соединять всех их коннектами, а в конструкторе самого нижнего(глубоко) виджета написать что нибудь наподобии Код:
|
07.01.2013, 11:49 | #9 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
Есть подозрения, что все твои проблемы решатся автоконнектом Qt там есть такая фича, тебе надо только именовать сигналы и слоты адекватным образом on_<имя класса-источника сигнала>_<имя сигнала>(<параметры>) |
|
11.01.2013, 12:15 | #10 | |
Форумчанин
Регистрация: 11.01.2013
Сообщений: 149
|
Цитата:
Обычно родители виджетов используют данные от своих потомков а не родители родителей (извините за каламбур). По этому вывод один. Тебе нужно пересмотреть структуру своей программы.
Может это и чушь, но это моя чушь и я ее никому не отдам.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаленный доступ... | romedal7 | Операционные системы общие вопросы | 2 | 03.05.2012 14:01 |
Поиск маршрутов между двумя городами между n городов | DorianMark | Паскаль, Turbo Pascal, PascalABC.NET | 11 | 09.11.2011 00:46 |
Доступ | Ko$ | Общие вопросы Delphi | 7 | 28.10.2011 16:09 |
QT - передача данных между виджетами | tumanovalex | Qt и кроссплатформенное программирование С/С++ | 3 | 26.05.2011 20:14 |
Отдаленный доступ между базами Access | Ras2im | Microsoft Office Access | 0 | 11.03.2011 15:22 |