Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [qt] connect между формами 
:(
    Опции темы
BiTOk
Дата 23.12.2010, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброе время суток. Пишу приложение, появилась потребность в создании дополнительной формы. На новой форме несколько комбобоксов и две кнопки - закрытие и принятие изменений. В комбобоксах отображается информация, которую надо передать из первой формы, при этом к ним же надо привязать дополнительную информацию (setItemData). Как можно догадаться очень неудобно передавать информацию по публичному слоту, желательно добавить всю нужную информацию прямо при создании второй формы (из первой) и отобразить готовую форму. При этом после нажатия кнопки применения надо передать информацию о выбранных значениях обратно на первую форму. connect между слотом в классе первой формы и сигналом onClick кнопки применить не получается, ибо ui protected. Аналогичная история с предварительным добавлением информации в комбобоксы. Как лучше реализовать это?
PM MAIL   Вверх
borisbn
Дата 23.12.2010, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 48
Всего: 135



добавь во вторую форму необходимые сигналы, свяжи их в конструкторе второй формы с сигналами из ui (так можно connect( obj, SIGNAL( ... ), obj, SIGNAL( ... ) ) ), а уже эти сигналы ( не от ui ) свяжи со слотами первой формы.

Можно и попроще, но менее красиво - перетащить ui из protected в public

Это сообщение отредактировал(а) borisbn - 23.12.2010, 16:00


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
BiTOk
Дата 23.12.2010, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Повторюсь, что очень не удобно передавать данные в форму посредством механизма сигнал-слот, надо редактировать комбобоксы до отображения формы напрямую.
PM MAIL   Вверх
borisbn
Дата 23.12.2010, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 48
Всего: 135



Цитата(BiTOk @  23.12.2010,  16:35 Найти цитируемый пост)
что очень не удобно передавать данные в форму посредством механизма сигнал-слот

я предлагаю лишь забирать данные с формы таким образом, а передавать их туда можно просто добавив public функцию во вторую форму, в которой и настраивать отображение ui-елементов

Код

void Form2::setCheck1Value( bool val )
{
   ui.check_1->setChecked( val );
}

...
void Form1::foo()
{
   form2 = new Form2();
   form2->setCheck1Value( bla_bla_bla );
   form2->show();
}


Это сообщение отредактировал(а) borisbn - 23.12.2010, 17:02


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
BiTOk
Дата 24.12.2010, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо за консультацию, так и пришлось делать, геморно, но правильно.
PM MAIL   Вверх
borisbn
Дата 24.12.2010, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 48
Всего: 135



У меня была похожая задача ( форма намтроек ). Я держал все настройки в структуре Config, передавал ссылку на неё в форму настроек, а затем показывал форму настроек. типа такого:

Код

SettingsForm::SettingsForm( Config & config
                                         , QWidget * parent
                                         )
    : QDialog( parent )
    , m_config( config )
{
    ui.setupUi( this );
}

int SettingsForm::exec()
{
    fillUiFromConfig();
    return QDialog::exec();
}

void SettingsForm::on_okBtn_clicked()
{
    fillConfigFromUi();
}




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

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

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


 




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


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

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