2016-09-20 1 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

디자이너에서 위젯을 승격하면 해당 위젯이 승격 한 클래스의 인스턴스가됩니다.

여기서하고있는 일은 또 다른 Marble :: Widget을 만들고 두 번째 대리석 위젯에 데이터를로드하는 것입니다.

승격 한 포인터는 ui 포인터의 일부 구성원이므로 해당 개체에 setMapThemeId()을 호출해야합니다.

관련 문제