Передача данных из одного класса в другой, ожидание нажатия
Добрый день! Имеется программа:
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);
Но значение в лайнэдит не выставляется, а в дебаге все нормально выводит.
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.Do you like it? Share on social networks!
- Akiv Doros
- Nov. 11, 2024, 2:58 p.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:50points,
- Rating points-4
- molni99
- Oct. 26, 2024, 1:37 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:80points,
- Rating points4
- molni99
- Oct. 26, 2024, 1:29 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:20points,
- Rating points-10
Добрый день.
Полагаю, дело в том, что у вас используется указатель на const char.
Попробуйте эти переменные lm_new и fi_new сразу преобразовывать в QString
Сделал сразу на QString. Из MyGLWidget в мауз ивенте отправляю сигнал emit giveFIfactLMfact(QString A, QString B) ;
В мэйнвиндоу делаю коннект
В дебаг все выводит правильно, а на лэйбле никаких изменений
Что выводит в дебаг? Покажите текст, который пытаетесь вывести в QLabel
"С 0.956 В 85.63" текст в таком формате идёт. При этом если делаю коннект на аналогичный лэйбл в мэйнвиндоу, то на нем все нормально показывается
Погодите, а что такое create_point? - это ваш кастомный виджет?
Это запись говорит лишь о том, что вы его создаёте
Но вы не устанавливаете окно ни в качестве парента, ни размещеаете этот виджет нигде в главном окне.
Полагаю, что вы просто не видите этого виджета или видите его частично.
Вам нужно его добавить в какой-нибудь QLayout внутри окна. Да и парента нужно устанавливать, чтобы утечек памяти не было.