Название: Передача данных от модального окна главному Отправлено: Raumnur от Июль 14, 2016, 12:23 Привет всем!
Есть 2 окна MainWindow и Dialog. Диалог- модальное окно. На нем есть 4 lineEdit, и нужно при accepted передать данные введенные в эдиты соответственно в 4 лейбла на главном окне. Выручайте ребят. С сигналами/слотами как то туго. dialog.cpp Код: void Dialog::on_buttonBox_accepted() mainwindow.cpp конект. myform - диалоговое окно. Код: connect(myform, SIGNAL(accepted()), this, SLOT(Dan(QString,QString,QString,QString))); и слот Код: void MainWindow::Dan(QString s1, QString s2, QString s3, QString s4) Программа запускается. Вызываю окно, ввожу данные, кликаю ОК и лейблы остаются неизменными. В чем беда? Название: Re: Передача данных от модального окна главному Отправлено: PimenS от Июль 14, 2016, 12:38 Как вариант, вы можете написать свой сигнал, который будет данные формы передавать. Тогда можно так:
Код: connect(myform, SIGNAL(mySignal(QString,QString,QString,QString)), this, SLOT(Dan(QString,QString,QString,QString))); Но мне больше нравится через запрос. По принципу QInputDialog::getText Название: Re: Передача данных от модального окна главному Отправлено: GreatSnake от Июль 14, 2016, 13:02 В чем беда? Беда в том, что при вызове слота в него передаются аргументы сигнала. А разве accepted() имеет агрументы?Название: Re: Передача данных от модального окна главному Отправлено: Raumnur от Июль 14, 2016, 13:05 Как вариант, вы можете написать свой сигнал, который будет данные формы передавать. Тогда можно так: Код: connect(myform, SIGNAL(mySignal(QString,QString,QString,QString)), this, SLOT(Dan(QString,QString,QString,QString))); Сигнал сделал, но результат тот же... Название: Re: Передача данных от модального окна главному Отправлено: PimenS от Июль 14, 2016, 13:06 Как вариант, вы можете написать свой сигнал, который будет данные формы передавать. Тогда можно так: Код: connect(myform, SIGNAL(mySignal(QString,QString,QString,QString)), this, SLOT(Dan(QString,QString,QString,QString))); Сигнал сделал, но результат тот же... Как вы его используете? Код покажите где он испускается. ЗЫ. Вам лучше почитать раздел Signals & Slots, там все очень понятно разъяснено. Название: Re: Передача данных от модального окна главному Отправлено: Igors от Июль 14, 2016, 13:56 Объявить сигнал (напр SignalPassText), связать его с MainWindow::Dan и испустить этот сигнал здесь
Код
И еще плохо что массированная передача строк по значению не вызывает никакой реакции/замечаний, "ничего, и так сойдет" Название: Re: Передача данных от модального окна главному Отправлено: Racheengel от Июль 14, 2016, 14:05 lazy sharing же...
Название: Re: Передача данных от модального окна главному Отправлено: GreatSnake от Июль 14, 2016, 14:13 lazy sharing же... Наверное всё-таки implicit sharing ;)Название: Re: Передача данных от модального окна главному Отправлено: Raumnur от Июль 14, 2016, 14:15 И еще плохо что массированная передача строк по значению не вызывает никакой реакции/замечаний, "ничего, и так сойдет" Вот этого замечания не понял, все настолько плохо? :) А так в целом разобрался, все передает...теперь =D Спасибо))) Название: Re: Передача данных от модального окна главному Отправлено: gil9red от Июль 14, 2016, 14:18 И еще плохо что массированная передача строк по значению не вызывает никакой реакции/замечаний, "ничего, и так сойдет" Вот этого замечания не понял, все настолько плохо? :) А так в целом разобрался, все передает...теперь =D Спасибо))) Вместо QString используйте const QString& и Igors будет доволен ;) Название: Re: Передача данных от модального окна главному Отправлено: Igors от Июль 14, 2016, 14:33 lazy sharing же... Сначала начинающий должен четко усвоить что подача структур по значению = западло. Да и возврат, строго говоря, тоже. Поэтому не надо сообщать об исключениях из правила которое еще не усвоено :)Вместо QString используйте const QString& и Igors будет доволен ;) Не буду :) 4 параметра - это много, громоздко, неудобно. Напрашивается слить их в QStringList и его уже красиво передаватьВот этого замечания не понял, все настолько плохо? :) Ну пока неважно :)Название: Re: Передача данных от модального окна главному Отправлено: Bepec от Июль 14, 2016, 16:05 Но мы до сих пор не услышали почему это западло... Я вот не понимаю, объясните? :)
Название: Re: Передача данных от модального окна главному Отправлено: kambala от Июль 14, 2016, 17:55 при использовании модального окна по-моему проще просто собрать данные из диалога после exec()
Название: Re: Передача данных от модального окна главному Отправлено: Igors от Июль 15, 2016, 10:35 Но мы до сих пор не услышали почему это западло... Я вот не понимаю, объясните? :) Вам нет :)при использовании модального окна по-моему проще просто собрать данные из диалога после exec() Да. Или подать в диалог указатель/ссылку на структуру которую он должен заполнить. Хотя это и создает кое-какие зависимости. |