Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

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

Последний раз редактировалось Finn_TH; 04.03.2018 в 23:23.
Finn_TH вне форума Ответить с цитированием
Старый 04.03.2018, 23:28   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

сигналы/слоты.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.03.2018, 23:28   #3
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

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

________________

ну или слоты конечно ))))
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 04.03.2018, 23:30   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

И что окна модальные тоже. И в этом случае как раз не нужно ничего передавать, можно просто public поле/getter в классе окна.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 04.03.2018 в 23:32.
Alex11223 вне форума Ответить с цитированием
Старый 04.03.2018, 23:35   #5
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

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

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

Могу быть не прав. Это сугубо мой опыт. С радостью выслушаю ваше мнение.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 04.03.2018, 23:37   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Всегда есть ведущий поток и дочерние/модальные и как там еще их можно обозвать объекты/потоки.
вообще-то обычно в одном потоке весь UI.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.03.2018, 23:54   #7
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

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

Покурил мануалы и реализовал таким способом:
в 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, 18:22   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

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

И я бы советовал давать всем сущностям нормальные имена (например ControlsWindow) в одном стиле, стараться делать имена переменных существительными (а функций глаголами) и т.п.
https://ru.hexlet.io/blog/posts/naming-in-programming
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача данных по нажатию кнопки (сессии) Aleks_006 PHP 8 01.06.2015 15:01
передача сигнала на usb устройство Алексей_2012 Компьютерное железо 7 17.04.2015 23:04
Как организовать изменения текста одной кнопки по нажатию на другой в одном и том же окне? Zhigool' Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 07.02.2012 21:14
Передача фокуса по нажатию кнопки Ch00kan0ff Общие вопросы C/C++ 2 27.03.2009 20:53
Как показать одну форму из другой в С++ по нажатию кнопки anton.metal Общие вопросы .NET 1 21.11.2008 19:38