Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: vitalka от Ноябрь 28, 2011, 06:31



Название: Использование динамических форм
Отправлено: vitalka от Ноябрь 28, 2011, 06:31
Создаю динамически много окон(QWidget) с различным содержанием. Появился вопрос, как информацию об этих окнах лучше хранить, что бы иметь доступ ко всем элементам?
Хранить ли ссылки на все элементы окна или достаточно только ссылки на само окно?
Как в этом случае получить по имени например, элементы содержащиеся в окне?
Пробовал хранить layout, и через него по местоположению получать адреса элементов, но это не очень удобно, в случае если нужно поменять интерфейс например.


Название: Re: Использование динамических форм
Отправлено: Bepec от Ноябрь 28, 2011, 06:56
Храни указатели. Вот тебе и весь сказ.


Название: Re: Использование динамических форм
Отправлено: vitalka от Ноябрь 28, 2011, 07:19
Храни указатели. Вот тебе и весь сказ.
До этого я и сам додумался, но тут получается, допустим я хочу создать новый тип окна (с другими элементами), я должен буду тогда менять структуру данных, в которой указатели хранятся.
Но ведь когда я на QWidget помещаю элементы, они же поидее уже хранятся где то, следовательно я их могу оттуда достать...


Название: Re: Использование динамических форм
Отправлено: Bepec от Ноябрь 28, 2011, 07:48
Незнаю твоих структур для чего они и можно ли их систематизировать. Так что скажу следующее:
По указателю на QWidget, ты можешь обратиться к любому виджету, находящемуся на нем.
Я бы систематизировал твои динамические формы и сделал бы 2-3 специализированных класса с функциями доступа :)


Название: Re: Использование динамических форм
Отправлено: vitalka от Ноябрь 28, 2011, 07:53
Незнаю твоих структур для чего они и можно ли их систематизировать. Так что скажу следующее:
По указателю на QWidget, ты можешь обратиться к любому виджету, находящемуся на нем.
Я бы систематизировал твои динамические формы и сделал бы 2-3 специализированных класса с функциями доступа :)
Вот как раз вопрос с том как найти нужный элемент на QWidget?
Могу ли, например внутреннему QWidget назначить имя, и потом при необходимости по этому имени получить на него указатель?


Название: Re: Использование динамических форм
Отправлено: kambala от Ноябрь 28, 2011, 08:49
динамически грузить - QFormBuilder/QUILoader, найти объект по имени - QObject::findChild[ren]()


Название: Re: Использование динамических форм
Отправлено: vitalka от Ноябрь 28, 2011, 10:20
динамически грузить - QFormBuilder/QUILoader, найти объект по имени - QObject::findChild[ren]()
Вот спасибо, то что надо.
Не понял причем здесь QFormBuilder/QUILoader....у меня формы динамически формируются.
Но я использовал setObjectName и findChild функции QObject, не знаю как раньше в голову не пришло, что это все через QObject делается. Проверил, все отлично работает.


Название: Re: Использование динамических форм
Отправлено: kambala от Ноябрь 28, 2011, 10:33
Не понял причем здесь QFormBuilder/QUILoader....у меня формы динамически формируются.
я думал они формируются динамически на основании каких-то предопределенных форм, которые хранятся в ui-файлах


Название: Re: Использование динамических форм
Отправлено: Bepec от Ноябрь 28, 2011, 10:35
ТС не настолько специалист :)
Да и я его же категориями мыслю :)