最近我安装了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();
}
答案 0 :(得分:1)
这是Qt 5.2中的一个错误,我已经报告了它。解决方法是在系统环境中设置环境变量“QSG_RENDER_LOOP = basic”。有关详细信息,请参阅QTBUG-35989和qt forum discussion