我正在尝试将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')我做错什么了?
发布于 2016-09-22 05:14:48
凯文说的话。从代码上讲,这将是
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->widget->setMapThemeId("earth/openstreetmap/openstreetmap.dgml");
}发布于 2016-09-22 04:45:58
当您在designer中提升一个小部件时,该小部件将是您提升到的类的一个实例。
这里要做的是创建另一个marble::小部件,并告诉第二个大理石小部件加载数据。
您提升的对象是ui指针的某个成员,您需要在该对象上调用setMapThemeId()。
https://stackoverflow.com/questions/39596953
复制相似问题