Я пытаюсь интегрировать MarbleWidget в проект QT. Если я только хочу показать виджет так:
Marble::MarbleWidget *mapWidget = new Marble::MarbleWidget();
mapWidget->setMapThemeId("earth/openstreetmap/openstreetmap.dgml");
mapWidget->show()
Все отлично. Но то, что я хотел бы сделать, это интегрировать виджет в существующее окно. Что я сделал, так это то, что я добавил виджет с помощью QtDesigner, повысил виджет до Marble :: MarbleWidget, а затем использовал следующий код:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->widget = new Marble::MarbleWidget();
ui->widget->setMapThemeId("earth/openstreetmap/openstreetmap.dgml");
ui->setupUi(this);
}
Я могу видеть виджет, но нет карты:
и я вижу следующие ошибки на консоли:
QObject::connect: No such signal MarbleWebView::titleChanged(QString) in ~/marble/sources/src/lib/marble/PopupItem.cpp:71
QObject::connect: (sender name: 'webView')
QObject::connect: (receiver name: 'titleText')
QObject::connect: No such signal MarbleWebView::urlChanged(QUrl) in ~/marble/sources/src/lib/marble/PopupItem.cpp:72
QObject::connect: (sender name: 'webView')
QObject::connect: No such signal MarbleWebView::titleChanged(QString) in ~/marble/sources/src/lib/marble/PopupItem.cpp:71
QObject::connect: (sender name: 'webView')
QObject::connect: (receiver name: 'titleText')
QObject::connect: No such signal MarbleWebView::urlChanged(QUrl) in ~/marble/sources/src/lib/marble/PopupItem.cpp:72
QObject::connect: (sender name: 'webView')
Что я сделал не так?
Что сказал Кевин Код, который будет
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->widget->setMapThemeId("earth/openstreetmap/openstreetmap.dgml");
}
Когда вы продвигаете виджет в конструкторе, этот виджет будет экземпляром класса, который вы продвигали.
Здесь вы создаете еще один Marble :: Widget и сообщаете второму мраморному виджету о загрузке данных.
Тот, кого вы повысили, является одним из членов ui
указатель, вам нужно вызвать setMapThemeId()
на этом объекте.