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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Связь виджетов расположенных на разных формах  (Прочитано 12303 раз)
Stek
Гость
« Ответ #15 : Июль 30, 2012, 12:52 »

При всём моём уважении и вашем статусе с внушительным кол-вом постов, ну наверное более объёмных и содержательных и не связанных с раздачей ссылок и указании направления на QtSDK/examples... был бы более благодарен за пример, реализующий указанную задачу.
Нет ничего плохого в "дайте списать" (суть Вашего поста), если человек вежливый. Но в данном случае как Вы себе это представляете? Кто-то должен набросать скелетик приложения, придумать какие-то формы, заполнить их чем-то - не многовато ли только чтобы "показать пример"? Выложите проект и скажите что с чем хотите связать - и поверьте, свяжут очень быстро  Улыбающийся
Проект это громко сказано, а ключевую задачу я бъяснил подробно в самом первом посте, могу повторить конечно. С ответом на вопрос мне постарались помочь, за что большое спасибо. Вопрос как я понимаю относится к разряду простых. Но я не разобрался. Хорошо когда достигаешь какого-то уровня, но в то же время не забываешь что и сам когда-то был новичком.
Записан
Bepec
Гость
« Ответ #16 : Июль 30, 2012, 12:54 »

Stek, прекратите тормозить.

Почитайте ссылку, которую я дал.
Вы понимаете что надо сделать. Вы не понимаете как связать данные?

connect(*объект1, SIGNAL(сигнал1(параметры сигнала)), *объект2, SLOT(слот2(параметры слота)));

Вот это связывание. Теперь при испускании сигнала объектом1, будет вызываться слот2 у объекта2. Данные в параметрах.

PS и не тормозите, повторюсь - вам народ помочь хочет, просит выкинуть вас проект. Выкиньте.

PPS у меня много весёлых и содержательных постов, не связанных с раздачей ссылок и указаний направления на QtSDK/example. Но в вашем случае - ТОЛЬКо QtSDK/example. Там в каждом примере по 7-8 примеров сигнал-слотовой архитектуры.
Записан
mutineer
Гость
« Ответ #17 : Июль 30, 2012, 13:01 »

На форме Form1 есть поле ввода и кнопка. По нажатию на кнопку происходит:
Код
C++ (Qt)
void Form1::on_pushButton_clicked()
{
   emit needToChangeText(ui->lineEdit->text());
}
 

На форме Form2 есть QLabel. У формы имеется слот с таким кодом:
Код
C++ (Qt)
void Form2::changeText(QString text)
{
   ui->label->setText(text);
}
 

В main.cpp создаются две формы и связываются:
Код
C++ (Qt)
#include <QtGui/QApplication>
#include "Form1.h"
#include "Form2.h"
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   Form1 f1;
   Form2 f2;
 
   QObject::connect(&f1, SIGNAL(needToChangeText(QString)), &f2, SLOT(changeText(QString)));
   f1.show();
   f2.show();
 
   return a.exec();
}
 

Теперь при нажатии кнопки в первой форме тест из ее поля ввода появляется во второй форме. Вот самый грубый пример
Записан
Stek
Гость
« Ответ #18 : Июль 30, 2012, 14:39 »

Спасибо mutineer, но видимо что-то я не  учёл, пишет No such signal MainWindow::needToChangeText(QString)...
Прикрепил файл с проектом.
Записан
Serr500
Гость
« Ответ #19 : Июль 30, 2012, 14:51 »

Вы бы почитали книжку какую-нибудь что-ли о том как работать с сигналами и слотами.
Код:
class MainWindow : public QMainWindow
{
    Q_OBJECT
    // . . .
    signals :
        void needToChangeText(QString text);
}
Реализации сигналов в .cpp быть не должно.
Записан
Bepec
Гость
« Ответ #20 : Июль 30, 2012, 14:52 »

пиндец...

Читай млиать статью по моей ссылке. У тебя же сигнал ни один не объявлен. Одни слоты.

private slots: - СЛОТЫ.
signals: - сигналы.

У сигнала нет и не будет никогда тела функции.
Т.е. он тупо объявлен. И отправляется emit сигнал(параметры).

Мдя Веселый

PS АРРРР, жара на меня плохо действует!!! КРОВИ КРОВИ!!!
Записан
Stek
Гость
« Ответ #21 : Июль 30, 2012, 15:16 »

Ура! Получилось. Спасибо большое mutineer, Serr500. Почитать материал мне стоит и много, хотя материал без практики как в моём случае стоит немногого.

P/S Верес, Видимо мой пост в Ваш адрес всё же был близок к истине, раз столько внимания и эмоций в виде отдельных эпитетов в мою сторону. Ответных слов не будет, я только начал своё знакомство QT, плохо что те кто достигает какого-либо уровня забывает себя в начале пути.
Записан
mutineer
Гость
« Ответ #22 : Июль 30, 2012, 15:18 »

P/S Видимо мой пост в Ваш адрес всё же был близок к истине, раз столько внимания и эмоций в виде отдельных эпитетов в мою сторону. Ответных слов не будет, я только начал своё знакомство QT, плохо что те кто достигает какого-либо уровня забывает себя в начале пути.

А еще хуже, что многие новички считают недостойным себя читать документацию. Это грустно...
Записан
Bepec
Гость
« Ответ #23 : Июль 30, 2012, 15:19 »

mutineer +1.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #24 : Июль 30, 2012, 15:36 »

Почитать материал мне стоит и много, хотя материал без практики как в моём случае стоит немногого.

P/S Верес, Видимо мой пост в Ваш адрес всё же был близок к истине, раз столько внимания и эмоций в виде отдельных эпитетов в мою сторону. Ответных слов не будет, я только начал своё знакомство QT, плохо что те кто достигает какого-либо уровня забывает себя в начале пути.
Проект был выложен в 2:39 а в 2:51 (спустя 12 минут) был дан ответ который помог Вам решить проблему. Так что Вы бы ото не патякали и не препирались на 2 листах а положили бы сразу проект. Цените свое и чужое время.
Записан
Stek
Гость
« Ответ #25 : Июль 30, 2012, 17:09 »

Закончилось всё тем же, что и на любом форуме с любой тематикой - победили "Бывалые".
Даже не знаю с кем соглашаться, кому что противопоставить...ну опять же я не в "ранге".

Спасибо всем за помощь!
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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