Qt快速下拉菜单崩溃程序

时间:2013-12-31 21:42:28

标签: qt qml qt5 qtquick2

最近我安装了Qt 5.2。在玩完之后我发现Qt Quick中具有某种下拉功能的大多数视觉组件(例如组合框,菜单栏项)在我从中选择某些内容时会使程序崩溃。同样的事情适用于我在5.1中工作的项目。我用Google搜索了问题,但没有任何有用的信息。
我在ubuntu 12.04 64bit上运行它。这是一个示例代码,当我使用菜单栏中的“文件”项时接收到SIGSEGV崩溃,并且在使用组合框时会发生同样的事情。

import QtQuick 2.0
import QtQuick.Controls 1.0

ApplicationWindow {
    title: qsTr("Hello World")
    width: 640
    height: 480
    ComboBox {
        id: combo
        model: [1, 2, 3]
    }

    menuBar: MenuBar {
        Menu {
            title: qsTr("File")
            MenuItem {
                text: qsTr("Exit")
                onTriggered: Qt.quit();
            }
        }
    }

    Button {
        text: qsTr("Hello World")
        anchors.centerIn: parent
    }
}


更新

这是堆栈
0 ?? 0x21
1 QOpenGLContext::makeCurrent(QSurface*) /home/abo0ody/Qt5.2.0/5.2.0/gcc_64/lib/libQt5Gui.so.5 0x7ffff6482f4b
2 ?? /home/abo0ody/Qt5.2.0/5.2.0/gcc_64/lib/libQt5Quick.so.5 0x7ffff79a2dfc
3 ?? /home/abo0ody/Qt5.2.0/5.2.0/gcc_64/lib/libQt5Quick.so.5 0x7ffff79a30da
4 ?? /home/abo0ody/Qt5.2.0/5.2.0/gcc_64/lib/libQt5Quick.so.5 0x7ffff79a392e
5 ?? /home/abo0ody/Qt5.2.0/5.2.0/gcc_64/lib/libQt5Quick.so.5 0x7ffff79a3a92
6 ?? /home/abo0ody/Qt5.2.0/5.2.0/gcc_64/lib/libQt5Core.so.5 0x7ffff5d3bf38
7 start_thread pthread_create.c 308 0x7ffff4959e9a
8 clone clone.S 112 0x7ffff54bc3fd
9 ??


我运行它的套件是自动检测到的,它的版本名称为“Qt 5.2.0 GCC 64bit”,qmake位置为“/home/UserName/Qt5.2.0/5.2.0/gcc_64/bin/qmake”。
我按下运行按钮正常运行它。
g ++版本是“g ++(Ubuntu 4.8.1-2ubuntu1~12.04)4.8.1”。

更新

这是一个简单的main.cpp,默认情况下可以加载QML文件,或者从命令行中获取一个参数来指定要加载的QML文件的路径,正如Laszlo Papp建议的那样。但它仍然为我重现了同样的错误。

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickWindow>

int main (int argc, char *argv[])
{
    QString pathToMainQML = "qml/testdrop/main.qml"; // if no command line argument is specified this qml file will be used
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;
    engine.load(argc > 1 ? argv[1] : pathToMainQML);
    QObject *topLevel = engine.rootObjects().value(0);
    QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);
    window->show();
    return app.exec();
}

1 个答案:

答案 0 :(得分:1)

这是Qt 5.2中的一个错误,我已经报告了它。解决方法是在系统环境中设置环境变量“QSG_RENDER_LOOP = basic”。有关详细信息,请参阅QTBUG-35989qt forum discussion