2016-09-20 68 views
0

我正在嘗試將大理石小工具集成到QT項目中。如果我只想顯示這樣的小部件:將大理石小工具添加到QT主窗口中

Marble::MarbleWidget *mapWidget = new Marble::MarbleWidget(); 
mapWidget->setMapThemeId("earth/openstreetmap/openstreetmap.dgml"); 
mapWidget->show() 

一切都很好。但我想要做的是將小部件集成到現有的窗口中。我所做的是我添加使用QtDesigner一個小部件,促進了小部件大理石:: 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

Kevin說了什麼。代碼方面,這將是

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

相關問題