Название: Взаимодействие окон созданных в дизайнере Отправлено: LEO от Август 09, 2012, 09:39 Вопрос в следующем, есть QWidget-главное окно в нем tableview соединенный с БД и несколько кнопок, все создано через designer, по нажатию одной из кнопок вылетает форма Qdialog, она тоже создана через designer, непонятно как связать окно с формой для прямого взаимодействия с таблицей, т.е. заносим данные в форму диалога, а они передаются в форму виджета, в программировании новичок.
заранее благодарен Название: Re: Взаимодействие окон созданных в дизайнере Отправлено: mutineer от Август 09, 2012, 10:09 Для главного окна и для диалога у тебя есть классы. Связываешь объекты этих классов между собой через сигнал-слот
Название: Re: Взаимодействие окон созданных в дизайнере Отправлено: LEO от Август 09, 2012, 10:21 ну да у главного окна class Widget, у диалога class Dialog, не совсем понятно где и как они свзываются, если есть наглядный пример , буду благодарен.
Название: Re: Взаимодействие окон созданных в дизайнере Отправлено: mutineer от Август 09, 2012, 10:22 http://www.prog.org.ru/topic_22634_0.html
Название: Re: Взаимодействие окон созданных в дизайнере Отправлено: LEO от Август 09, 2012, 12:44 в общем сделал по примеру написанного, но пишет нет соединения
Object::connect: No such signal Widget::needToChangeText(QString) для наглядности приложил проект. вообще возникают определенные сомнения что задуманное получится. Название: Re: Взаимодействие окон созданных в дизайне Отправлено: mutineer от Август 09, 2012, 12:52 объявлен у тебя сигнал без параметра:
Код: signals: void needToChangeText(); а подключаться пытаешься к сигналу с параметром Код: QObject::connect(&window, SIGNAL(needToChangeText(QString)), &dialog, SLOT(changeText(QString))); а слота changeText(QString) у диалога вообще нет Название: Re: Взаимодействие окон созданных в дизайнере Отправлено: LEO от Август 09, 2012, 13:52 спасибо, однако после добавления в dialog.h
private slots: void changeText(QString); /////////////////////////////////// исправления signals: void needToChangeText(QString); выдает ошибку moc_dialog.cpp:-1: ошибка: undefined reference to `Dialog::changeText(QString)' -1: ошибка: collect2: ld returned 1 exit status Название: Re: Взаимодействие окон созданных в дизайнере Отправлено: kambala от Август 09, 2012, 13:55 а реализацию метода void changeText(QString) ты написал? хотя бы элементарно void changeText(QString) {}
Название: Re: Взаимодействие окон созданных в дизайнере Отправлено: LEO от Август 09, 2012, 14:23 Спасибо, заработоло при добавлении реализации, все ок, но вот не пойму самого механизма связки двух Ui , мне надо обращаться к примеру в файле диалога к ui файлу виджета, чтобы достучаться до tableview который там висит, грубо говоря ui->lineedit->setText(ui->tableview и т.д.), tableview и lineedit находятся на разных формах..
Название: Re: Взаимодействие окон созданных в дизайнере Отправлено: mutineer от Август 09, 2012, 14:42 Обращаться надо не напрямую, а через сигнал-слот
Тебе бы подучить С++ и почитать по сигнал-слот в Qt, может тогда станет понятнее... Название: Re: Взаимодействие окон созданных в дизайнере Отправлено: LEO от Август 09, 2012, 14:47 спасибо, пойду читать.
|