Russian Qt Forum
Ноябрь 22, 2024, 19:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Обмен данными между формами  (Прочитано 11477 раз)
Cerbere
Гость
« : Сентябрь 29, 2011, 22:36 »

Добрый день!

Допустим есть основное окно программы, есть отдельное окно (форма) для ввода настроек для основной программы.

Как передать около 10 значений формы в основную программу? Для каждого контрола ввода создавать сигнал-слот?
Записан
Rem Norton
Гость
« Ответ #1 : Сентябрь 29, 2011, 22:54 »

Не обязательно. Можно так:

Допустим на форме есть виджеты типа QLineEdit  в количестве 10 штук (edLine1, edLine2, ... , edLine10)

В объявлении "отдельно окна для ввода настроек" пшем типа:
Код
C++ (Qt)
class QSettingsDlg: public QDialog, public Ui::QSettingsDlg{
...
 

потом в слоте основного окна:
Код
C++ (Qt)
QString s1;
QString s2;
...
...
QString s10;
QSettingsDlg dlg(this);
if (dlg.exec() == QDialog::Accepted)
{
 s1 = dlg.edLine1.text();
 s2 = dlg.edLine2.text();
 ...
 s10 = dlg.edLine10.text();
}
 

Суть ясна?
Записан
Cerbere
Гость
« Ответ #2 : Сентябрь 29, 2011, 23:05 »

Да, ясно. Спасибо, попробую!

Что, если много разных типов элементов управления? Просто для каждого типа контролов делать такую обработку? Или есть еще более универсальный способ обмена данными?
Записан
Rem Norton
Гость
« Ответ #3 : Сентябрь 29, 2011, 23:14 »

Все-таки суть не уловил. Поясняю:
Когда создается класс формы, то при применении множественного публичного наследования все виджеты на форме доступны из родительского класса.
Т.е. в данном случае, если пишем:
Код
C++ (Qt)
class QSettingsDlg: public QDialog, public Ui::QSettingsDlg{
 

то в том месте, где вызывается этот самый QSettingsDlg, будут доступны все его виджеты. И не важно, какого они типа.

P.S. Или это я чего-то недопонял... Задача стоит как: по кнопке (ну или другому событию) поднять диалог настроек и получить оттуда кучу данных?
Записан
andrew.k
Гость
« Ответ #4 : Сентябрь 30, 2011, 00:48 »

Если я правильно тебя понял, то ты все правильно понял. Теперь тебе остается только это осознать и обдумать.
Norton тебе уже дал решение, которое тебя интересует. Изучи его.
И не стоит называть свои собственные классы с буквы Q.
Записан
Andrew Vladoff
Гость
« Ответ #5 : Октябрь 04, 2011, 20:40 »

Можно делать проще. Объявить глобальные переменные и через class QSettings писать /читать их. Для меня так так наглядней
Записан
andrew.k
Гость
« Ответ #6 : Октябрь 05, 2011, 09:36 »

А можно еще писать в файл или отправлять по сети.   Смеющийся
Не говори глупости.
Записан
Andrew Vladoff
Гость
« Ответ #7 : Октябрь 05, 2011, 20:21 »

Цитировать
А можно еще писать в файл или отправлять по сети.   
Не говори глупости.
не понимаю чем плох вариант сохранения настроек в реестре или в ini файле? Вызвал окно настроек, при закрытии его сохранил настройки и всё.
Записан
Rem Norton
Гость
« Ответ #8 : Октябрь 05, 2011, 21:42 »

Цитировать
А можно еще писать в файл или отправлять по сети.   
Не говори глупости.
не понимаю чем плох вариант сохранения настроек в реестре или в ini файле? Вызвал окно настроек, при закрытии его сохранил настройки и всё.
Не крутою Надо ini-шник хранить на файловом хосте в архиве под паролем. Самое то!!!
Это был стёб, а если серьезно, то не зачем усложнять простые вещи.
Записан
andrew.k
Гость
« Ответ #9 : Октябрь 05, 2011, 22:02 »

Цитировать
А можно еще писать в файл или отправлять по сети.   
Не говори глупости.
не понимаю чем плох вариант сохранения настроек в реестре или в ini файле? Вызвал окно настроек, при закрытии его сохранил настройки и всё.
Вопрос был не в том, как сохранять настройки.
Прочитай название темы. И ответ уже был дан.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.127 секунд. Запросов: 20.