QLabel не заполняется из другого класса

298
01 февраля 2018, 18:34

У меня приложение с картой, при нажатии на карту я рисую Waypoint и сохраняю его в мой struct WaypointData

Рисование Waypoint на карту

int MapViewClass::view_ObjectCallback(GlsMapView* self, DisplayEvent* ev)
{
    Vector lonlatalt;
    _pickedLocation.GetGeodetic(&lonlatalt);
    WaypointData* w = new WaypointData();
    w->iD = 0;
    w->state = 0;
    w->lng = lonlatalt.x;
    w->lat = lonlatalt.y;
    w->alt = lonlatalt.z;
    int iconType = 0;
    w->iconId = symbols->AddIcon(_pickedLocation,iconType);
    short nN = _dtedMapChartSource.GetElevationDataPoint(_pickedLocation);
    symbols->GetIcon(w->iconId)->SetResource("State", std::to_string(w->state).c_str());
    symbols->GetIcon(w->iconId)->SetResource("ID", std::to_string(w->iD).c_str());
    //Set Elevation Data
    symbols->GetIcon(w->iconId)->SetResource("NN", std::to_string(nN).c_str());
    //Set Height over Ground
    symbols->GetIcon(w->iconId)->SetResource("Height", std::to_string(w->alt).c_str());
    AddPathPoint(_pickedLocation);
    waypointData.push_back(*w);
    MainWindow *_MainWindor = new MainWindow();
   _MainWindor->PMission_BKS(w);
}

мой struckt

struct WaypointData
    {
        short iD;
        short iconId;
        double lng;
        double lat;
        double alt;
        int minAltitude;
        int state;    
    };

Все это находится у меня в

namespace disti
{
class MapViewClass : public ComponentBase
{
public:

В этой же фукнции где рисуется Waypoint вызывается функция из MainWindow

MainWindow *_MainWindor = new MainWindow();
_MainWindor->PMission_BKS(w);

Функция PMission_BKS находится в public в

namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{

Вот так выглядит моя функция PMission_BKS

void MainWindow::PMission_BKS(WaypointData* w)
{
    std::stringstream str;
    str << w->lng;
    ui->PMission_uberschrift->setText(str.str().c_str());
}

Проблема в следующем, если я пытаюсь вызвать qDebug() << w->lng; то получаю значение к примеру 10.5112, если же пытаюсь вывести текст в QLabel или QPlainText то попросту ничего не вижу

Answer 1

По коду нельзя точно сказать, но есть предположение что проблема в этом месте:

MainWindow *_MainWindor = new MainWindow();
_MainWindor->PMission_BKS(w);

Приведите код где используется эта часть.

Есть подозрение, что Вы где-то одном месте создаете экземпляр MainWindow, который и отображаете на экране, а в вышепреведенном коде, вместо того чтоб использовать существующий MainWindow - создаете новый и для него вызываете PMission_BKS и там, в этом новом экземпляре даже корректно устанавливается значение QLabel, но эта форма не отображена на экране и Вы не видите измененией

READ ALSO
Ограничения двумерного vector&#39;а

Ограничения двумерного vector'а

Подскажите, пожалуйста, есть ли у двумерного vector'а ограничение по размеруИ, если да, то какое оно в обе стороны

276
GetAdaptersAddresses и выделение памяти

GetAdaptersAddresses и выделение памяти

Итак имеем функцию GetAdaptersAddresses, которая возвращает список сетевых интерфейсов в системеОписание ф-ции:

339
Явное приведение типов в стиле Си и С++ [дубликат]

Явное приведение типов в стиле Си и С++ [дубликат]

На данный вопрос уже ответили:

316
Как добавить Interface в пакет?

Как добавить Interface в пакет?

Установил новую версию IntelliJ Idea (Community Edition 20173

332