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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Взаимодействие окон созданных в дизайнере  (Прочитано 4663 раз)
LEO
Гость
« : Август 09, 2012, 09:39 »

Вопрос в следующем, есть QWidget-главное окно в нем tableview соединенный с БД и несколько кнопок, все создано через designer, по нажатию одной  из кнопок вылетает форма Qdialog, она тоже создана через designer, непонятно как связать окно с формой для прямого взаимодействия с таблицей, т.е. заносим данные в форму диалога, а они передаются в форму виджета, в программировании новичок.
заранее благодарен 
Записан
mutineer
Гость
« Ответ #1 : Август 09, 2012, 10:09 »

Для главного окна и для диалога у тебя есть классы. Связываешь объекты этих классов между собой через сигнал-слот
Записан
LEO
Гость
« Ответ #2 : Август 09, 2012, 10:21 »

ну да у главного окна class Widget, у диалога class Dialog, не совсем понятно где и как они свзываются, если есть наглядный пример , буду благодарен.
Записан
mutineer
Гость
« Ответ #3 : Август 09, 2012, 10:22 »

http://www.prog.org.ru/topic_22634_0.html
Записан
LEO
Гость
« Ответ #4 : Август 09, 2012, 12:44 »

в общем сделал по примеру написанного, но пишет нет соединения
Object::connect: No such signal Widget::needToChangeText(QString)
для наглядности приложил  проект.
вообще возникают определенные сомнения что задуманное получится.
Записан
mutineer
Гость
« Ответ #5 : Август 09, 2012, 12:52 »

объявлен у тебя сигнал без параметра:
Код:
signals: void needToChangeText();

а подключаться пытаешься к сигналу с параметром
Код:
QObject::connect(&window, SIGNAL(needToChangeText(QString)), &dialog, SLOT(changeText(QString)));

а слота changeText(QString) у диалога вообще нет
« Последнее редактирование: Август 09, 2012, 12:56 от mutineer » Записан
LEO
Гость
« Ответ #6 : Август 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

Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #7 : Август 09, 2012, 13:55 »

а реализацию метода void changeText(QString) ты написал? хотя бы элементарно void changeText(QString) {}
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
LEO
Гость
« Ответ #8 : Август 09, 2012, 14:23 »

Спасибо, заработоло при добавлении реализации, все ок, но вот не пойму самого механизма связки двух Ui , мне надо обращаться к примеру в файле диалога к ui файлу виджета, чтобы достучаться до tableview который там висит, грубо говоря ui->lineedit->setText(ui->tableview и т.д.), tableview и lineedit находятся на разных формах..
Записан
mutineer
Гость
« Ответ #9 : Август 09, 2012, 14:42 »

Обращаться надо не напрямую, а через сигнал-слот
Тебе бы подучить С++ и почитать по сигнал-слот в Qt, может тогда станет понятнее...
Записан
LEO
Гость
« Ответ #10 : Август 09, 2012, 14:47 »

спасибо, пойду читать.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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