Название: Связь виджетов расположенных на разных формах Отправлено: Stek от Июль 27, 2012, 14:37 Здравствуйте!
Собственно вопрос в названии темы: как связать виджеты расположенные на разных формах? Тема поднималась и не раз, но увы я так и не понял как же это всё-таки сделать :( Есть 2 формы, на одной из них treeWidget, на другой comboBox с списком значений. По нажатии кнопки выбранное значение из comboBox должно присваиваться текущему пункту treeWidget ui->treeWidget->currentItem()->setText(0,ui->comboBox->currentText()); как такое осуществить из разных форм Название: Re: Связь виджетов расположенных на разных формах Отправлено: mutineer от Июль 27, 2012, 14:43 связать формы через сигнал-слот, например
Название: Re: Связь виджетов расположенных на разных формах Отправлено: Stek от Июль 27, 2012, 14:52 связать формы через сигнал-слот, например Спасибо конечно, но можно поподробнее. Про сигналы, слоты читал и имею представление. Но хотелось бы небольшой пример в к-ом увязываются между собой виджеты разных форм, если это не очень сложно и это раздел для новичков начинающих своё знакомство с qt. Думаю в таком случае одинаковых тем на форуме станет на одну меньше. Название: Re: Связь виджетов расположенных на разных формах Отправлено: mutineer от Июль 27, 2012, 14:56 Создаешь у первой формы сигнал needToChangeText(QString) и при нажатии на кнопку делаешь его emit со значением ui->comboBox->currentText()
Во второй форме делаешь слот changeText(QString), в котором выполняешь ui->treeWidget->currentItem()->setText(параметр слота) Привязываешь сигнал к слоту Название: Re: Связь виджетов расположенных на разных формах Отправлено: Stek от Июль 27, 2012, 15:39 Не понимаю :'(, точнее понимаю о чём речь, но как организуется взаимосвязь не пойму.
Создам я слоты у обеих форм, но как их увязать между собой, чтобы виджет одной формы обратился к виджету другой. Был пост с подобной темой http://www.prog.org.ru/topic_16396_0.html (http://www.prog.org.ru/topic_16396_0.html), там говорилось о qobject_cast. Не могли бы привести фрагмент кода для таких как я непонимающих. Название: Re: Связь виджетов расположенных на разных формах Отправлено: mutineer от Июль 27, 2012, 15:41 Ты, похоже, невнимательно читаешь. Я не говорил про слоты у обеих форм, я говорил про сигнал у одной формы и слот у другой. Связываются они через connect, что должны делать я описал. Что конкретно тебе непонятно?
Название: Re: Связь виджетов расположенных на разных формах Отправлено: Stek от Июль 27, 2012, 15:49 Читать стараюсь внимательно, но не понимаю если можно так выразиться.. результирующей составляющей. Можно повториться, неясно как я связываю виджеты разных форм, ключевой связующий "элемент" мне не понятен. Реализовать предложенный вами вариант у меня не получилось. Ткните носом в тему, мануал, пример из qt с решением подобного вопроса..
Название: Re: Связь виджетов расположенных на разных формах Отправлено: mutineer от Июль 27, 2012, 16:04 Ткнуть носом в пример реализации сигнала и слота? Первая форма высылает сигнал со значением, которое вторая форма в слоте вставляет в нужный виджет. Все рады, счастливы, поют песни. Выкладывай код, в котором у тебя не получилось реализовать
Название: Re: Связь виджетов расположенных на разных формах Отправлено: Bepec от Июль 27, 2012, 17:08 http://qt-project.org/doc/qt-4.8/signalsandslots.html#signals-and-slots
Название: Re: Связь виджетов расположенных на разных формах Отправлено: Stek от Июль 30, 2012, 10:56 Добрый день!
Не могли бы вы всё-таки привести пример кода, если не затруднит. ??? Название: Re: Связь виджетов расположенных на разных формах Отправлено: mutineer от Июль 30, 2012, 11:00 Пример кода сигналов и слотов?
Ты будешь показывать что у тебя не получилось? Название: Re: Связь виджетов расположенных на разных формах Отправлено: Bepec от Июль 30, 2012, 12:00 http://qt-project.org/doc/qt-4.8/signalsandslots.html#signals-and-slots Название: Re: Связь виджетов расположенных на разных формах Отправлено: Stek от Июль 30, 2012, 12:22 http://qt-project.org/doc/qt-4.8/signalsandslots.html#signals-and-slots При всём моём уважении и вашем статусе с внушительным кол-вом постов, ну наверное более объёмных и содержательных и не связанных с раздачей ссылок и указании направления на QtSDK/examples... был бы более благодарен за пример, реализующий указанную задачу. Название: Re: Связь виджетов расположенных на разных формах Отправлено: Igors от Июль 30, 2012, 12:32 При всём моём уважении и вашем статусе с внушительным кол-вом постов, ну наверное более объёмных и содержательных и не связанных с раздачей ссылок и указании направления на QtSDK/examples... был бы более благодарен за пример, реализующий указанную задачу. Нет ничего плохого в "дайте списать" (суть Вашего поста), если человек вежливый. Но в данном случае как Вы себе это представляете? Кто-то должен набросать скелетик приложения, придумать какие-то формы, заполнить их чем-то - не многовато ли только чтобы "показать пример"? Выложите проект и скажите что с чем хотите связать - и поверьте, свяжут очень быстро :)Название: Re: Связь виджетов расположенных на разных формах Отправлено: Stek от Июль 30, 2012, 12:46 Пример кода сигналов и слотов? BkbТы будешь показывать что у тебя не получилось? Когда вообщем-то не понятна реализация написать что-то внятное довольно трудно, можно написать бред и количество постов в ветке станет больше. void needToChangeText(QString) я пишу для form1, pushButton расположен на form2.ui по нажатии на него я должен вызвать emit needToChangeText(QString) .. Можно на примере показать что к чему, чтобы было понятно (и не только мне)? Или же, как обычно бывает: Вам всё выше написали, а вы просто не хотите читать и разбираться. Мне непонятно как виджет формы1 сможет получить данные виджета формы2. Я понимаю что можно использовать сигнал-слот (собственно вопрос как?). Я только начал изучать qt. В контексте моей задачи я не знаю как увязать слот-сигнал. Название: Re: Связь виджетов расположенных на разных формах Отправлено: Stek от Июль 30, 2012, 12:52 При всём моём уважении и вашем статусе с внушительным кол-вом постов, ну наверное более объёмных и содержательных и не связанных с раздачей ссылок и указании направления на QtSDK/examples... был бы более благодарен за пример, реализующий указанную задачу. Нет ничего плохого в "дайте списать" (суть Вашего поста), если человек вежливый. Но в данном случае как Вы себе это представляете? Кто-то должен набросать скелетик приложения, придумать какие-то формы, заполнить их чем-то - не многовато ли только чтобы "показать пример"? Выложите проект и скажите что с чем хотите связать - и поверьте, свяжут очень быстро :)Название: Re: Связь виджетов расположенных на разных формах Отправлено: Bepec от Июль 30, 2012, 12:54 Stek, прекратите тормозить.
Почитайте ссылку, которую я дал. Вы понимаете что надо сделать. Вы не понимаете как связать данные? connect(*объект1, SIGNAL(сигнал1(параметры сигнала)), *объект2, SLOT(слот2(параметры слота))); Вот это связывание. Теперь при испускании сигнала объектом1, будет вызываться слот2 у объекта2. Данные в параметрах. PS и не тормозите, повторюсь - вам народ помочь хочет, просит выкинуть вас проект. Выкиньте. PPS у меня много весёлых и содержательных постов, не связанных с раздачей ссылок и указаний направления на QtSDK/example. Но в вашем случае - ТОЛЬКо QtSDK/example. Там в каждом примере по 7-8 примеров сигнал-слотовой архитектуры. Название: Re: Связь виджетов расположенных на разных формах Отправлено: mutineer от Июль 30, 2012, 13:01 На форме Form1 есть поле ввода и кнопка. По нажатию на кнопку происходит:
Код
На форме Form2 есть QLabel. У формы имеется слот с таким кодом: Код
В main.cpp создаются две формы и связываются: Код
Теперь при нажатии кнопки в первой форме тест из ее поля ввода появляется во второй форме. Вот самый грубый пример Название: Re: Связь виджетов расположенных на разных формах Отправлено: Stek от Июль 30, 2012, 14:39 Спасибо mutineer, но видимо что-то я не учёл, пишет No such signal MainWindow::needToChangeText(QString)...
Прикрепил файл с проектом. Название: Re: Связь виджетов расположенных на разных формах Отправлено: Serr500 от Июль 30, 2012, 14:51 Вы бы почитали книжку какую-нибудь что-ли о том как работать с сигналами и слотами.
Код: class MainWindow : public QMainWindow Название: Re: Связь виджетов расположенных на разных формах Отправлено: Bepec от Июль 30, 2012, 14:52 пиндец...
Читай млиать статью по моей ссылке. У тебя же сигнал ни один не объявлен. Одни слоты. private slots: - СЛОТЫ. signals: - сигналы. У сигнала нет и не будет никогда тела функции. Т.е. он тупо объявлен. И отправляется emit сигнал(параметры). Мдя :D PS АРРРР, жара на меня плохо действует!!! КРОВИ КРОВИ!!! Название: Re: Связь виджетов расположенных на разных формах Отправлено: Stek от Июль 30, 2012, 15:16 Ура! Получилось. Спасибо большое mutineer, Serr500. Почитать материал мне стоит и много, хотя материал без практики как в моём случае стоит немногого.
P/S Верес, Видимо мой пост в Ваш адрес всё же был близок к истине, раз столько внимания и эмоций в виде отдельных эпитетов в мою сторону. Ответных слов не будет, я только начал своё знакомство QT, плохо что те кто достигает какого-либо уровня забывает себя в начале пути. Название: Re: Связь виджетов расположенных на разных формах Отправлено: mutineer от Июль 30, 2012, 15:18 P/S Видимо мой пост в Ваш адрес всё же был близок к истине, раз столько внимания и эмоций в виде отдельных эпитетов в мою сторону. Ответных слов не будет, я только начал своё знакомство QT, плохо что те кто достигает какого-либо уровня забывает себя в начале пути. А еще хуже, что многие новички считают недостойным себя читать документацию. Это грустно... Название: Re: Связь виджетов расположенных на разных формах Отправлено: Bepec от Июль 30, 2012, 15:19 mutineer +1.
Название: Re: Связь виджетов расположенных на разных формах Отправлено: Igors от Июль 30, 2012, 15:36 Почитать материал мне стоит и много, хотя материал без практики как в моём случае стоит немногого. Проект был выложен в 2:39 а в 2:51 (спустя 12 минут) был дан ответ который помог Вам решить проблему. Так что Вы бы ото не патякали и не препирались на 2 листах а положили бы сразу проект. Цените свое и чужое время.P/S Верес, Видимо мой пост в Ваш адрес всё же был близок к истине, раз столько внимания и эмоций в виде отдельных эпитетов в мою сторону. Ответных слов не будет, я только начал своё знакомство QT, плохо что те кто достигает какого-либо уровня забывает себя в начале пути. Название: Re: Связь виджетов расположенных на разных формах Отправлено: Stek от Июль 30, 2012, 17:09 Закончилось всё тем же, что и на любом форуме с любой тематикой - победили "Бывалые".
Даже не знаю с кем соглашаться, кому что противопоставить...ну опять же я не в "ранге". Спасибо всем за помощь! |