c++ - 将 MarbleWidget 添加到 QT 的主窗口中

标签 c++ qt marble

我正在尝试将 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);
}

我可以看到小部件但看不到 map :

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

我做错了什么?

最佳答案

当您在设计器中提升一个小部件时,该小部件将成为您提升到的类的一个实例。

您在这里所做的是创建另一个 Marble::Widget 并告诉第二个大理石小部件加载数据。

您提升的对象是ui 指针的某个成员,您需要对该对象调用setMapThemeId()

关于c++ - 将 MarbleWidget 添加到 QT 的主窗口中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39596953/

相关文章:

c++ - 如果有的话,有没有办法获得 QColor 的智能名称?

c++ - 如何在qt中使用QRegularExpression匹配字符串开头的空格?

rxjs - 如何测试使用 rxjs 弹珠发出分组事件的 observables?

c++ - gcc 运行时重定位错误

c++ - 将数据存储在可执行文件中

C++从模块大小中的进程读取所有内存

C++ NetBeans : How to link my . o 文件到我的项目?

qt - 如何通过 QTCPSocket 发送文件及其文件名?