Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
支持Qt5的MarbleWidget-示例代码不再正确退出_Qt_Widget_Qt5_Sample_Marble - Fatal编程技术网

支持Qt5的MarbleWidget-示例代码不再正确退出

支持Qt5的MarbleWidget-示例代码不再正确退出,qt,widget,qt5,sample,marble,Qt,Widget,Qt5,Sample,Marble,我正在写一个航海导航应用程序。我是一个Qt5和大理石新手,但这是工作得很好,直到我击中这个块 它使用MarbleWidget作为显示应用程序输出的一种方式,与Marble提供的示例应用程序非常相似 当我在最新版本(opensuse)5.14.0中将其移植到Qt5时,它停止正常工作-它将不再通过单击标题栏右上角的x按钮退出应用程序 Marble提供的示例代码也显示了这种行为 以下是示例应用程序: #include <QtWidgets/QApplication> #include &l

我正在写一个航海导航应用程序。我是一个Qt5和大理石新手,但这是工作得很好,直到我击中这个块

它使用MarbleWidget作为显示应用程序输出的一种方式,与Marble提供的示例应用程序非常相似

当我在最新版本(opensuse)5.14.0中将其移植到Qt5时,它停止正常工作-它将不再通过单击标题栏右上角的x按钮退出应用程序

Marble提供的示例代码也显示了这种行为

以下是示例应用程序:

#include <QtWidgets/QApplication>
#include <marble/MarbleWidget.h>
#include <marble/GeoPainter.h>

using namespace Marble;

class MyMarbleWidget : public MarbleWidget
{
public:
    virtual void customPaint(GeoPainter* painter);
};

void MyMarbleWidget::customPaint(GeoPainter* painter)
{
    GeoDataCoordinates home(8.4, 49.0, 0.0, GeoDataCoordinates::Degree);
    painter->setPen(Qt::green);
    painter->drawEllipse(home, 7, 7);
    painter->setPen(Qt::black);
    painter->drawText(home, "Hello Marble!");
}

int main(int argc, char** argv)
{
    QApplication app(argc,argv);
    MyMarbleWidget *mapWidget = new MyMarbleWidget;
    mapWidget->setMapThemeId("earth/openstreetmap/openstreetmap.dgml");
    mapWidget->show();
    return app.exec();
}
我尝试了一些解决办法,但似乎没有任何办法解决这个问题

我已经在一个大理石论坛上发布了这个问题,但已经好几个月没人看了


任何向前推进的想法都会有所帮助

你的openSUSE版本是什么?应用了所有补丁的openSUSE 15.1。找到了一个解决方案:添加mapWidget->setAttribute(Qt::WA_DeleteOnClose);你的openSUSE版本是什么?应用了所有补丁的openSUSE 15.1。找到了一个解决方案:添加mapWidget->setAttribute(Qt::WA_DeleteOnClose);
all: pre bld post

bld: quick_marble.x

quick_marble.x : quick_marble.cpp
    g++ -g -fpic -I /usr/include/qt5/ -I/usr/include/qt5/QtWidgets \
        -I/usr/include/qt5/QtGui \
        -I/usr/include/qt5/QtCore \
        -o quick_marble.x \
        quick_marble.cpp \
        -L/usr/local/lib64 -lmarblewidget-qt5 -lQt5Core -lQt5Widgets -lQt5Gui

pre :
    rm -f *.x
    rm -f *.list

post : 
    ldd quick_marble.x >quick_marble.modules.list
    echo all done