Russian Qt Forum

Qt => Общие вопросы => Тема начата: sandre от Октябрь 06, 2010, 12:24



Название: Взаимосвязь двух форм
Отправлено: sandre от Октябрь 06, 2010, 12:24
Есть главная форма, и форма ввода неких данных, так вот при заполнение этих данных и закрытия окна, нужно в главном окне получить эти данные, как это реализовать? При закрытии окна ввода данных, объект уничтожается и я не могу из него что либо получить, можно его явно не уничтожать, что не есть хорошо. Можно при закрытии окна передовать напрямую объект с данными в главное окно, НО правильно ли это будет?


Название: Re: Взаимосвязь двух форм
Отправлено: stump от Октябрь 06, 2010, 13:03
Есть главная форма, и форма ввода неких данных, так вот при заполнение этих данных и закрытия окна, нужно в главном окне получить эти данные, как это реализовать? При закрытии окна ввода данных, объект уничтожается и я не могу из него что либо получить, можно его явно не уничтожать, что не есть хорошо.

Лично я определяю наследника от QDialog...Бросаю на него нужные компоненты и создаю ему сигнал, который испускается при завершении ввода данных...В свою очередь, этот сигнал подсоединен к слоту главной формы...

Цитировать
Можно при закрытии окна передовать напрямую объект с данными в главное окно, НО правильно ли это будет?
Думаю правильно...Если смотреть по аналогии, например, с QInputDialog::getText(), то он возвращает QString родителю диалога...


Название: Re: Взаимосвязь двух форм
Отправлено: sandre от Октябрь 06, 2010, 13:14
Цитировать
который испускается при завершении ввода данных
Простите что подразумевается под этим?


Название: Re: Взаимосвязь двух форм
Отправлено: stump от Октябрь 06, 2010, 13:16
Цитировать
который испускается при завершении ввода данных
Простите что подразумевается под этим?

emit signalName(signalParam);

читать здесь:
http://habrahabr.ru/blogs/qt_software/50812/


Название: Re: Взаимосвязь двух форм
Отправлено: crossly от Октябрь 06, 2010, 14:15
Код:
void same_slot()
{
   QDialog d(this);
   if(d.exec()){
      myData=d.getData();
   }
}

упрощенно....