Qt快速下拉菜单崩溃程序
最近我安装了Qt5.2。在玩过之后,我发现Qt Quick中大多数具有下拉功能(例如组合框、菜单栏项)的可视组件在我从中选择某个内容时会使程序崩溃。同样的事情也适用于我在5.1中运行的项目。我用谷歌搜索了这个问题,但没有找到有用的答案Qt快速下拉菜单崩溃程序,qt,qml,qt5,qtquick2,Qt,Qml,Qt5,Qtquick2,最近我安装了Qt5.2。在玩过之后,我发现Qt Quick中大多数具有下拉功能(例如组合框、菜单栏项)的可视组件在我从中选择某个内容时会使程序崩溃。同样的事情也适用于我在5.1中运行的项目。我用谷歌搜索了这个问题,但没有找到有用的答案 我在ubuntu 12.04 64位上运行它。这是一个示例代码,当我使用菜单栏中的“File”项时,接收到SIGSEGV会崩溃,使用组合框时也会发生同样的情况 import QtQuick 2.0 import QtQuick.Controls 1.0 Appl
我在ubuntu 12.04 64位上运行它。这是一个示例代码,当我使用菜单栏中的“File”项时,接收到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开始线程pthread创建.c308 0x7ffff4959e9a
8克隆克隆.S 112 0x7ffff54bc3fd
9??
我运行它的工具包被自动检测到,它的版本名为“Qt5.2.0 GCC 64位”,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();
}
#包括
#包括
#包括
int main(int argc,char*argv[])
{
QString pathToMainQML=“qml/testdrop/main.qml”;//如果未指定任何命令行参数,将使用此qml文件
QGUI应用程序应用程序(argc、argv);
qqmlaplicationengine;
engine.load(argc>1?argv[1]:路径到inqml);
QObject*topLevel=engine.rootObjects().value(0);
QQuickWindow*window=qobject_cast(顶级);
窗口->显示();
返回app.exec();
}
这是Qt5.2中的一个错误,我已经报告过了。解决方法可以是在系统环境中设置环境变量“QSG_RENDER_LOOP=basic”。有关更多详细信息,请参阅和如何运行此qml代码?它在哪里崩溃?你用调试器试过了吗?你能用一个简单的main.cpp加载你的qml并从命令行试一下吗?我更新了帖子中的信息来回答@LaszloPapp的问题