Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.
Внимание! Некоторое время письма не доходят до аккаунтов MAIL RU GROUP, не доходят на все почтовые ящики mail.ru, inbox.ru, bk.ru. Пишите им жалобы, чтобы быстрее восстановили получение писем, регистрируйтесь через яндекс почту и gmail, туда письма с активизацией доходят.

Вернуться   Форум программистов > 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
Сообщений: 17,402
Репутация: 3353

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

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

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

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

________________

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

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
Адрес: Россия, Мурманск
Сообщений: 2,034
Репутация: 586

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

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

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

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

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

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

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
Сообщений: 17,402
Репутация: 3353

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


14:34.


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

RusProfile.ru


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