Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 05.03.2018, 00:18   #1
Finn_TH
Новичок
 
Регистрация: 05.03.2018
Сообщений: 3
Репутация: 10
По умолчанию Передача сигнала по нажатию кнопки в другой ui

Добрый вечер!
Помогите, люди добрые, не понимаю, как реализовать следующую вещь:
Есть окно MainWindow, по нажатию кнопки в котором вызывается второе окно controls, в котором, в свою очередь, есть кнопка, вызывающая окно a5cont.
Из окна a5cont по нажатию кнопки мне надо передать текст в QLabel по имени a5label в окне controls. Как это сделать?

Прошу сильно тапками не бить, если вопрос глупый и банальный :D

Последний раз редактировалось Finn_TH; 05.03.2018 в 00:23.
Finn_TH вне форума   Ответить с цитированием
Старый 05.03.2018, 00:28   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,335
Репутация: 3242

icq: 512-765
skype: alexp.frl
По умолчанию

сигналы/слоты.
Alex11223 вне форума   Ответить с цитированием
Старый 05.03.2018, 00:28   #3
WorldMaster
Профессионал
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Адрес: Россия, Мурманск
Сообщений: 1,838
Репутация: 498

icq: 359393755
По умолчанию

Ну тупо в лоб в основном потоке создать переменную и передать ссылку или указатель на нее дочке. Затем отследить результат закрытия дочки и если ок то взять данные по имеющейся ссылке или указателю.

________________

ну или слоты конечно ))))
__________________
ICQ - 359393755 E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
Если помог - нажми на весы
WorldMaster вне форума   Ответить с цитированием
Старый 05.03.2018, 00:30   #4
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,335
Репутация: 3242

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
в основном потоке
Автор не говорил, что есть "не основные".

И что окна модальные тоже. И в этом случае как раз не нужно ничего передавать, можно просто public поле/getter в классе окна.

Последний раз редактировалось Alex11223; 05.03.2018 в 00:32.
Alex11223 вне форума   Ответить с цитированием
Старый 05.03.2018, 00:35   #5
WorldMaster
Профессионал
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Адрес: Россия, Мурманск
Сообщений: 1,838
Репутация: 498

icq: 359393755
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Автор не говорил, что есть "не основные".
И что окна модальные тоже.
Как мне кажется я постарался описать максимально абстрактно механизм взаимодействия с различными объектами внутри пространства программы. Всегда есть ведущий поток и дочерние/модальные и как там еще их можно обозвать объекты/потоки.

другой момент можно во вторичном потоке выделить кусок памяти, заполнить его и вернуть указатель или ссылку ... кому как угоднее. ))))

Могу быть не прав. Это сугубо мой опыт. С радостью выслушаю ваше мнение.
__________________
ICQ - 359393755 E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
Если помог - нажми на весы
WorldMaster вне форума   Ответить с цитированием
Старый 05.03.2018, 00:37   #6
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,335
Репутация: 3242

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Всегда есть ведущий поток и дочерние/модальные и как там еще их можно обозвать объекты/потоки.
вообще-то обычно в одном потоке весь UI.
Alex11223 вне форума   Ответить с цитированием
Старый 05.03.2018, 00:54   #7
WorldMaster
Профессионал
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Адрес: Россия, Мурманск
Сообщений: 1,838
Репутация: 498

icq: 359393755
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Всегда есть ведущий поток и дочерние/модальные и как там е
Но суть то в чем?? либо в главном окне создаем переменную и в дочке ее заполняем, либо в дочке создаем переменную и тамже ее заполняем и возвращаем указатель/ссылку.
__________________
ICQ - 359393755 E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
Если помог - нажми на весы
WorldMaster вне форума   Ответить с цитированием
Старый 05.03.2018, 01:40   #8
Finn_TH
Новичок
 
Регистрация: 05.03.2018
Сообщений: 3
Репутация: 10
По умолчанию

Покурил мануалы и реализовал таким способом:
в controls.cpp так выглядит слот кнопки, открывающей окно a5cont:
Код:

void controls::on_a5control_clicked()
{
    a5cont *a5cnt = new a5cont();
    connect(a5cnt, SIGNAL(sendData(QString)), this, SLOT(recieveData(QString))); //
    a5cnt->show();
}

приконнектил публичный слот, прописанный в controls.h
Код:

public slots:
    void recieveData(QString);//

в a5cont.h прописал отправляющий сигнал
Код:

signals:
    void sendData(QString);//

в a5cont.cpp отправляю сигнал по нажатию кнопки
Код:

void a5cont::on_a511save_clicked()
{
    //тут вычисление и составление отправляемой строки
    emit sendData(QString(make));//

а так принимаю сигнал в controls.cpp
Код:

void controls::recieveData(QString make)//
{
    ui->a5label->setText(QString(make));
}

Имеет такая реализация право на жизнь? Или есть способ сделать это элегантней?
Finn_TH вне форума   Ответить с цитированием
Старый 05.03.2018, 19:22   #9
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,335
Репутация: 3242

icq: 512-765
skype: alexp.frl
По умолчанию

Вместо SIGNAL/SLOT лучше
https://wiki.qt.io/New_Signal_Slot_Syntax

И слоту не надо быть public (а с этим синтаксисом можно и вообще без отдельной функции в классе).

И я бы советовал давать всем сущностям нормальные имена (например ControlsWindow) в одном стиле, стараться делать имена переменных существительными (а функций глаголами) и т.п.
https://ru.hexlet.io/blog/posts/naming-in-programming

Последний раз редактировалось Alex11223; 05.03.2018 в 19:31.
Alex11223 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача данных по нажатию кнопки (сессии) Aleks_006 PHP 8 01.06.2015 16:01
передача сигнала на usb устройство Алексей_2012 Железо 7 18.04.2015 00:04
Как организовать изменения текста одной кнопки по нажатию на другой в одном и том же окне? Zhigool' Assembler 1 07.02.2012 21:14
Передача фокуса по нажатию кнопки Ch00kan0ff Общие вопросы C/C++ 2 27.03.2009 21:53
Как показать одну форму из другой в С++ по нажатию кнопки anton.metal Общие вопросы .NET 1 21.11.2008 20:38


19:47.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru