2016-09-20 4 views
0

Я пытаюсь интегрировать MarbleWidget в проект QT. Если я просто хочу показать виджет вот так:Добавить 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); 
} 

Я могу видеть виджет, но нет карты:

the widget when integrated

и я вижу следующие ошибки на консоли:

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') 

Что я сделал не так?

ответ

1

Что сказал Кевин. Кодекс, который будет

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    ui->widget->setMapThemeId("earth/openstreetmap/openstreetmap.dgml"); 
} 
1

Когда вы рекламируете виджет в дизайнере, этот виджет будет экземпляром класса, на который вы продвинули.

Что вы здесь делаете, создайте еще один Marble :: Widget и сообщите, что второй виджет-мрамор для загрузки данных.

Тот, кого вы рекламируете, является членом указателя ui, вам нужно позвонить setMapThemeId() на этот объект.

Смежные вопросы