0 / 0 / 0
Регистрация: 03.04.2021
Сообщений: 118

Передача переменной через сигнал

09.10.2021, 22:50. Показов 11302. Ответов 41
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Передал переменную через сигнал в другую форму и столкнулся с проблемой что я не знаю как эту переменную передать в другие функции.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.10.2021, 22:50
Ответы с готовыми решениями:

Передача указателя на сигнал
Добрый день =) Перевожу программу с делфи на Qt. В делфи передавал указатели на функции с помощью записей(структур) RR = record ...

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

Передача указателя через сигнал
Здравствуйте. Есть процесс, который создает область разделяемой памяти и порождает дочерний процесс, которому сообщает ключ к этой...

41
0 / 0 / 0
Регистрация: 03.04.2021
Сообщений: 118
14.10.2021, 12:22  [ТС]
Студворк — интернет-сервис помощи студентам
sdf45
Возникла проблемка не большая. Я так и не понял как сделать чтобы формы видели друг друга, поскольку я создал ещё одну форму и мне надо чтобы я мог туда отправить данные и потом вернуть другие данные, но не могу сделать это из-за того что не могу определить в новой форме "EditFile"
C++
1
Mainwindow *mwindow.
Добавлено через 10 минут
sdf45
Вообще можно чтобы форма была подключена к нескольким другим формам?

Добавлено через 3 часа 13 минут

Добавлено через 1 час 0 минут
Выяснил что форма может быть подключёна к нескольким форма но я так и не смог передать значения переменных из MainWindow в EditFile.

Добавлено через 6 минут
Это мой личный дневник
День 1.
Подключил форму EditFile к MainWindow но оказалось что MainWindow опять не видит мою форму и не берёт её значение в свою глобальную переменную. Не знаю выживу ли я с такой практикой.

Добавлено через 12 минут
Дополнение к записи с 1 дня.
Понял что приравнял пустую переменную к сигналу и поэтому произошла ошибка, но остался вопрос смогу ли я подключить mainwindow к editfile?
Конец записи.
0
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
14.10.2021, 15:07
Black King, для доступа к форме из другой форме можно хранить указатель на форму2 в форме1, как у Вас был указатель MainWindow * window в классе Dialog. Получить адрес окна в такой указатель можно, когда созданы экземпляры обоих форм. Применительно к Вашему коду можно получить ссылку на MainWindow в его конструкторе, либо в main.cpp

На практике получается:
В Dialog.h
C++ (Qt)
1
2
3
4
5
6
#include "mainwindow.h"
class Dialog{  
...
MainWindow *mwindow=nullptr;
...
}
Если создаём диалог в конструкторe MainWindow
C++ (Qt)
1
2
3
4
5
MainWindow::MainWindow(...)
{   
Dialog* mdialog=new Dialog;
mdialog->mwindow=this;
}
Если в main.cpp
C++ (Qt)
1
2
3
MainWindow w;
Dialog* mdialog=new Dialog;
Dialog->mwindow= &w;
Теперь можно обращаться к экземпляру MainWindow в классе Dialog
C++ (Qt)
1
2
3
4
void Dialog::someFunction()
{ 
if(mwindow) mwindow->setWindowTitle("12345");
}
Я такой подход стараюсь уже не использовать, так как легко запутаться где кто к чему имеет доступ ( хотя у меня знаний сейчас не хватает сказать, говнокод это или нет ) поэтому предпочитаю сигналы слоты для обмена данными.
0
0 / 0 / 0
Регистрация: 03.04.2021
Сообщений: 118
14.10.2021, 17:40  [ТС]
Так это и сам сделал, а мне бы понять как из mainwindow в dialog отправить данные, поскольку я использовал метод, который вы мне показали до этого и мне форма выдаёт ошибку.
0
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
14.10.2021, 18:13
Цитата Сообщение от Black King Посмотреть сообщение
как из mainwindow в dialog отправить данные
в прошлый раз данные отправлялись из Dialog в MainWindow
C++ (Qt)
1
connect(mwindow, &Dialog::red, this, &MainWindow::blue);
представьте, что они теперь поменялись местами:
- создайте в MainWindow сигнал по аналогии c void red(QString); из Dialog, например
C++ (Qt)
1
 void MainWindow::mainWindowSignal(QString);
- создайте в Dialog слот по аналогии c void blue(QString txt); из MainWindow, например
C++ (Qt)
1
void Dialog::dialogSlot(QString);
- сделайте коннект по аналогии с прошлым примером, что-то вроде
C++ (Qt)
1
connect( this, &MainWindow::mainWindowSignal, mwindow, &Dialog::dialogSlot);
0
0 / 0 / 0
Регистрация: 03.04.2021
Сообщений: 118
15.10.2021, 19:28  [ТС]
connect( this, &MainWindow::mainWindowSignal, mwindow, &Dialog::dialogSlot);

А это запись точно должна работать?
0
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
15.10.2021, 19:41
Цитата Сообщение от Black King Посмотреть сообщение
А это запись точно должна работать?
а почему нет? правда учтите что mwindow это ж должен быть Dialog, лутше Dialog *mdialog =new Dialog сделать, а то путаница в названиях.
Цитата Сообщение от sdf45 Посмотреть сообщение
connect( this, &MainWindow::mainWindowSignal, mwindow, &Dialog::dialogSlot);
этот коннект делается в конструкторе MainWindow, соединяем сигнал от него со слотом экземпляра Dialog.
0
0 / 0 / 0
Регистрация: 03.04.2021
Сообщений: 118
15.10.2021, 20:03  [ТС]
А где вы это обо всём узнали? Вы какую-то специализированную литературу читаете или вы в компании работаете которая занимается разработками в QT или образовательное учреждение?
0
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
15.10.2021, 20:22
Black King, просто хобби, да и знания мои очень слабые на данный момент, то что обсуждаем тут-это самые азы Qt
0
0 / 0 / 0
Регистрация: 03.04.2021
Сообщений: 118
15.10.2021, 20:29  [ТС]
sdf45
Цитата Сообщение от sdf45 Посмотреть сообщение
connect( this, &MainWindow::mainWindowSignal, mwindow, &Dialog::dialogSlot);
Кстати, судя по коду и вашим словам что Dialog это MainWindow, получается я отправляю из Dialog сигнал и принимаю в MainWidnow слот этот сигнал, а мне надо из MainWindow отправить сигнал в Dialog. Я уже принимаю сигнал в MainWindow от Dialog и когда я пытаюсь сделать чтобы Dialog отправлял сигнал у меня выскакивает куча ошибок с набором символов.
0
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
15.10.2021, 20:36
Цитата Сообщение от Black King Посмотреть сообщение
судя по коду и вашим словам что Dialog это MainWindow
это где?
у Вас просто в коде который был в архиве , экземпляр Dialog назывался window, я и предложил переименовать в mdialog, но это не суть...
Покажите код чего там не получается
0
0 / 0 / 0
Регистрация: 03.04.2021
Сообщений: 118
15.10.2021, 20:36  [ТС]
Не внимательно прочитал. Понял вроде бы.
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,348
15.10.2021, 21:10
Black King, а ты как создаёшь новую форму?
0
0 / 0 / 0
Регистрация: 03.04.2021
Сообщений: 118
16.10.2021, 16:37  [ТС]
alexu_007
Вложения
Тип файла: mp4 2021-10-16 20-36-26.mp4 (1.87 Мб, 11 просмотров)
0
0 / 0 / 0
Регистрация: 03.04.2021
Сообщений: 118
16.10.2021, 20:17  [ТС]
Прошло 3 дня с моей последней записи. Я всё же смог сделать задуманное но осталось куча дел и остаётся вопрос, смогу ли я пережить эту практику? Я лишь могу предполагать но ясно одно, сколько бы я не учился, всё равно я буду думать что я тупой ебл*н.

"Уезжает на верхом на коне в закат."
"Надпись The End".
"В ролях Black King: Беспалуха он же бес, а также клоун."
"Автор идеи: sdf45"
"Какой-то чел с камерой: alexu_007"
"И другие"
"Все права защищены"
0
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
16.10.2021, 20:25
Black King,
а че это я автор идеи? я скорее суфлер, шептю подсказки иногда
0
 Аватар для Ender Che
521 / 411 / 77
Регистрация: 29.05.2018
Сообщений: 1,363
16.10.2021, 21:02
Цитата Сообщение от Black King Посмотреть сообщение
сколько бы я не учился, всё равно я буду думать что я тупой ебл*н
Почитайте Шлее, например. И чтение стандартного хелпа кутишного никто не отменял. А также просмотр примеров, в большом количестве прилагаемых к самому фреймворку.

Я вот три года потихоньку осваиваю Qt, но всё равно не считаю себя специалистом. Чисто любителем.
0
0 / 0 / 0
Регистрация: 03.04.2021
Сообщений: 118
17.10.2021, 18:51  [ТС]
Ender Che
К сожалению в нашей профессии стать на 100% специалистом невозможно.
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,348
17.10.2021, 21:57
Ничё не понял из видео. Что-бы создать в проекте вторую форму, нужно кликнуть правой мышой по названию проекта, и выбрать в меню: добавить новый -> Qt -> класс формы Qt Designer. В результате в проект должны добавиться файлы .cpp .h и .ui с именем новой формы.
0
0 / 0 / 0
Регистрация: 03.04.2021
Сообщений: 118
18.10.2021, 07:04  [ТС]
alexu_007
Ну я так и делаю.
0
0 / 0 / 0
Регистрация: 03.04.2021
Сообщений: 118
18.10.2021, 07:13  [ТС]
"Реверс"
"Пауза"
sdf45
В общем что-то я обкакался и поспешил и не проверил, что у меня значение переменной не передаётся из MainWindow в EditFile
Вложения
Тип файла: rar bking.rar (11.2 Кб, 0 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.10.2021, 07:13

передача переменной через header
нужно передать константу через header на другую страницу и там вывести ее. Что нужно изменить не подскажете? index.php <?php...

Передача переменной через Eventhandler
есть метод public static void LinkedLabelClick(object sender,EventArgs e??) { ... } нужно передать входное значение (int...

Передача переменной через функцию
никак не могу разобраться... Из $row состоит ссылка, нужно, чтобы ...$cid присваивал действующее значение $row, т.е. ../index.php?cid=$row...

Передача переменной через форму
Комрады, прошу совета! В VBA новичок, не могу разобраться с передачей переменной через элемент формы TextBox. Код упростил. Создаю...

Передача переменной через ссылку
Привет Нажимаю на ссылку index.php?doska=Guest449_&tip=1,и в самом верху index.php прописал 3 проверки echo $doska; И не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru