Передача данных из одного класса в другой, ожидание нажатия
Добрый день! Имеется программа:
mainwindow.cpp/mainwindow.h - главное окно
В нём openglwidget, на котором отрисовка карты myglwidget.cpp/myglwidget.h
У каждой точки на карте есть широта и долгота, они определяются сторонней библиотекой и работают правильно
Есть еще 3 форма CoordinatePoint.cpp/.h, отвечающая за базу данных точек (добавление в нее), в ней вводятся все та же широта и долгота вручную, там же кнопка "Добавить с карты". Потребовалось еще сделать так, чтобы можно было выбирать их с карты через эту кнопку.
1)Подскажите, пожалуйста как реализовать функционал, чтобы по нажатию на эту кнопку программа дожидалась нажатия на виджет opengl в мэйн окне и получала оттуда эти значения (они определены в myglwidget).
2) Либо же как их оттуда передать в соответствующие поля CoordinatePoint.
Пробовал передавать немного странным путем:
myglwidget.h
- signals:
- void giveFiLm(const Tchar* A, const Tchar* B);
myglwidget.cpp
- void MyGLWidget::mousePressEvent(QMouseEvent *event)
- {
- lastPos = event->pos();
- emit giveFiLm(lm_new, fi_new);
- }
lm_new = _CMN::lm_deg2str(geo_deg.lm);
fi_new = _CMN::fi_radtostr(geo_deg.fi*M _PI/180);
coordinatepoint.cpp
- void create_NT::on_getFiLm(const Tchar* A, const Tchar* B)
- {
- fi_tmp = B;
- lm_tmp = A;
- qDebug()<<"shirota"<<fi_tmp<<" "<<"dolgota"<<" "<<lm_tmp;
- ui->lineEdit6->setText(fi_tmp);
- }
В mainwindow.cpp
- connect(ui->widget,&MyGLWidget::giveFiLm,cre,&create_NT::on_getFiLm);
Но значение в лайнэдит не выставляется, а в дебаге все нормально выводит.
Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!
Пікірлер
- Соңғы пікірлер
- AKСәуір 1, 2025, 11:41 Т.Ж.Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VPНаурыз 9, 2025, 4:14 Т.Қ.Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- ИМҚар. 22, 2024, 9:51 Т.Қ.Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
- Енді форумда талқылаңыз
- DTСәуір 14, 2025, 3:38 Т.Қ.Всем привет! На Qt 6.8 MinGW пытаюсь сделать управление подключением WiFi из программы. Пока делаю поддержку Windows, но так же хочу в дальнейшем внедрить и поддержку Linux/MacOS. Для…
- fАқп. 15, 2025, 1:46 Т.Қ.Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
Добрый день.
Полагаю, дело в том, что у вас используется указатель на const char.
Попробуйте эти переменные lm_new и fi_new сразу преобразовывать в QString
Сделал сразу на QString. Из MyGLWidget в мауз ивенте отправляю сигнал emit giveFIfactLMfact(QString A, QString B) ;
В мэйнвиндоу делаю коннект
В дебаг все выводит правильно, а на лэйбле никаких изменений
Что выводит в дебаг? Покажите текст, который пытаетесь вывести в QLabel
"С 0.956 В 85.63" текст в таком формате идёт. При этом если делаю коннект на аналогичный лэйбл в мэйнвиндоу, то на нем все нормально показывается
Погодите, а что такое create_point? - это ваш кастомный виджет?
Это запись говорит лишь о том, что вы его создаёте
Но вы не устанавливаете окно ни в качестве парента, ни размещеаете этот виджет нигде в главном окне.
Полагаю, что вы просто не видите этого виджета или видите его частично.
Вам нужно его добавить в какой-нибудь QLayout внутри окна. Да и парента нужно устанавливать, чтобы утечек памяти не было.