Передача данных из одного класса в другой, ожидание нажатия
Добрый день! Имеется программа:
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);
Но значение в лайнэдит не выставляется, а в дебаге все нормально выводит.
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Пожалуйста, авторизуйтесь или зарегистрируйтесь
- Akiv Doros
- 11 ноября 2024 г. 22:58
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:50баллов,
- Очки рейтинга-4
- molni99
- 26 октября 2024 г. 8:37
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80баллов,
- Очки рейтинга4
- molni99
- 26 октября 2024 г. 8:29
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:20баллов,
- Очки рейтинга-10
Добрый день.
Полагаю, дело в том, что у вас используется указатель на const char.
Попробуйте эти переменные lm_new и fi_new сразу преобразовывать в QString
Сделал сразу на QString. Из MyGLWidget в мауз ивенте отправляю сигнал emit giveFIfactLMfact(QString A, QString B) ;
В мэйнвиндоу делаю коннект
В дебаг все выводит правильно, а на лэйбле никаких изменений
Что выводит в дебаг? Покажите текст, который пытаетесь вывести в QLabel
"С 0.956 В 85.63" текст в таком формате идёт. При этом если делаю коннект на аналогичный лэйбл в мэйнвиндоу, то на нем все нормально показывается
Погодите, а что такое create_point? - это ваш кастомный виджет?
Это запись говорит лишь о том, что вы его создаёте
Но вы не устанавливаете окно ни в качестве парента, ни размещеаете этот виджет нигде в главном окне.
Полагаю, что вы просто не видите этого виджета или видите его частично.
Вам нужно его добавить в какой-нибудь QLayout внутри окна. Да и парента нужно устанавливать, чтобы утечек памяти не было.