Название: Статус виджета на другой форме Отправлено: Wander от Март 04, 2009, 10:52 Можно проверить из главной формы, что там с виджетом на другой форме ???
Например, на другой форме есть CheckBox или comboBox нужно проверить - включен флажок или нет или какой текст сейчас в выпадающем списке ??? Так можно? Название: Re: Статус виджета на другой форме Отправлено: spirit от Март 04, 2009, 10:56 распривать нутро другого виджета и передавай на него указатель, но, имхо, это неверно. либо сделать френдовую связь. лучше враперов накатать.
Название: Re: Статус виджета на другой форме Отправлено: lit-uriy от Март 04, 2009, 11:07 В Qt используется другой подход: Слоты и сигналы, при изменении состояния флажка посылается сигнал, соедени его с нужным слотом.
Название: Re: Статус виджета на другой форме Отправлено: spirit от Март 04, 2009, 11:12 В Qt используется другой подход: Слоты и сигналы, при изменении состояния флажка посылается сигнал, соедени его с нужным слотом. это частный случай. всю инфу в этом случае через sender получить можно. но как я понял нужно одновременно получить доступ к виджетам, т.е. есть метод в котором нужно проверить не только флажки, но и получить (тут же) строку из лайнэдита.Название: Re: Статус виджета на другой форме Отправлено: Wander от Март 04, 2009, 11:44 Я так понял - изящно и просто проверить, что лежит в другой форме нельзя.
Тода как же реализуют в приложениях форму "Свойств/Опций" программы ??? Когда юзер выставил опции, то как же проверять какие там опции (или делать все в одной форме?). Или же мне записывать все в текстовый файл, а потом из главной формы читать этот файл ??? Название: Re: Статус виджета на другой форме Отправлено: spirit от Март 04, 2009, 11:47 зачем? для опций обычно создают дилог. этот далог вызывают в главном окне. затем
Код
Название: Re: Статус виджета на другой форме Отправлено: Wander от Март 04, 2009, 11:50 Ой - ой - а можно поподробнее, как считать опции (ведь опции это всего текстовые метки в соответствии к которым что-то меняется)
Название: Re: Статус виджета на другой форме Отправлено: spirit от Март 04, 2009, 11:58 ну я ж говорил, при помощи враперов. допустим есть на форме 2 лайнэдита и два чекбокса, то код будет приблизительно таким
Код
а если надо сохранить эти настройки, то можно либо перегрузить метод accept() диалога и все сохранять в файл, либо же в сохранять в виджете (после exec()) в окне, которое вызывает твой диалог. Название: Re: Статус виджета на другой форме Отправлено: lit-uriy от Март 04, 2009, 12:09 а можно и подругому, некий виджет (форма, например) предоставляет интерфейс к настройкам себя, и по сути, ты вызываешь диалог либо предоставляемый этим виджетом, либо в чужем дмалоге высвечивается список свойств, который определенным образом предоставляет настраиваемый виджет (например выдет QMap, который редактирует пользователь).
А вот над интерфейсом надо самому подумать. Название: Re: Статус виджета на другой форме Отправлено: spirit от Март 04, 2009, 12:12 можно и так. тогда можно заюзать QObject::setProperty/property
Название: Re: Статус виджета на другой форме Отправлено: Wander от Март 04, 2009, 12:22 У меня куча ошибок полезло :'(
Если не трудно - конечно же, исходники все бы решили. А то я тут вам голову морочу. Название: Re: Статус виджета на другой форме Отправлено: BRE от Март 04, 2009, 12:39 Например так. Есть главное окно и несколько окошек с опцями:
Код
Еще в окнах опций можно сделать сигнал, который будет посылаться при изменении одной из опций или сделать кнопку "Обновить" и ловить его в MainWindow, выбирать нужные параметры и обновляться. Название: Re: Статус виджета на другой форме Отправлено: spirit от Март 04, 2009, 12:40 ну смотри, перегружаешь accept в своем диалоге. в этом методе сетаешь состояние всех своих веджетов через setProperty. затем в вызывающем окне получаешь значения через property. можно их запихнуть в QMap<QString, QVaraint> и потом сохранить в файл (если нужно конечно). получить список всех свойст, которые были динамически добавлены можно через QList<QByteArray> QObject::dynamicPropertyNames () const. получится очень гибкая реализация.
|