2016-09-20 7 views
0

私はMarbleWidgetをQTプロジェクトに統合しようとしています。QTのメインウィンドウにMarbleWidgetを追加

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

すべてが問題ありません。しかし、私がしたいのは、ウィジェットを既存のウィンドウに統合することです。

the widget when integrated

:私はウィジェットが、ノーの地図を見ることができます

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); 
} 

:私がやったことは、私は、QtDesignerを使用してウィジェットを追加マーブルにウィジェットを促進することである:: MarbleWidgetは、次のコードを使用しました

と表示され、コンソールに次のエラーが表示されます。

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

デザイナーでウィジェットを宣伝すると、そのウィジェットはプロモートしたクラスのインスタンスになります。

あなたがここでやっていることは、もう1つのMarble :: Widgetを作成し、データをロードするために2番目の大理石ウィジェットに伝えることです。

プロモートしたものがuiポインタのメンバーの一部であるため、そのオブジェクトのsetMapThemeId()を呼び出す必要があります。

関連する問題