在QtQuick 2应用程序中使用某些Qt5类时出现分段错误

s3rius

当尝试使用一些Qt-5类时,我遇到了崩溃。我首先发现了这种尝试使用的方法QFileSystemModel尝试setRootPath立即致电会导致崩溃。调用栈没有多大帮助(全部都是汇编代码),只是QFileIconProvider::icon()在seg错误发生之前调用的最后一个函数。

因此,接下来我尝试QFileIconProvider手动使用,并且-毫不奇怪-它也使程序崩溃了。

我正在使用QtCreator 4,项目类型为“ Qt Quick Application”。相反,当我创建“ Qt Widgets Application”类型的项目时,可以同时使用QFileIconProvider并且QFileSystemModel没有问题。

这是我的主意。我对Qt环境的了解不足,无法知道两种类型的项目之间的哪些差异可能导致seg错误。

两个项目都使用相同的Kit(相同的gcc,相同的Qt 5.6.1)和QtCreator设置的默认设置。

这是我的project.pro文件:

TEMPLATE = app

QT += qml quick widgets //default .pro file except for widgets
CONFIG += c++11

SOURCES += main.cpp

RESOURCES += qml.qrc

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

# Default rules for deployment.
include(deployment.pri)

这是main.cpp:

#include <QGuiApplication>
#include <QQmlApplicationEngine>

#include <QDir>
#include <QFileSystemModel>
#include <QQmlContext>
#include <QFileIconProvider>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;

    //If trying to use QFileSystemMode...
    QFileSystemModel model;
    model.setRootPath("/somefolder/"); //..the crash happens here

    //Attempting to use QFileIconProvider also crashes
    //QFileIconProvider fip;
    //fip.icon( QFileInfo("/somefolder/somefile") ); //<- here

    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    return app.exec();
}

我将不胜感激,对于如何调试该烂摊子的任何帮助或指点。

jpnurmi

听起来QFileSystemModel令人困惑,它是QtWidgets的一部分,因此要求您创建和实例,QApplication而不是QGuiApplication

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

QtQuick 2.0 GL错误

来自分类Dev

PyQt5和QtQuick

来自分类Dev

QtQuick 2透明窗口背景

来自分类Dev

如何使用QtQuick平铺的画布?

来自分类Dev

编译QtQuick2应用程序时重复符号

来自分类Dev

如何运行导入QtQuick2.0和QtQuick.Controls 1.1的应用程序

来自分类Dev

Qt - 未安装模块“QtQuick.Controls”

来自分类Dev

错误:“未安装模块“ QtQuick.Controls”

来自分类Dev

错误:“未安装模块“ QtQuick.Controls”

来自分类Dev

利用PyQt5中的QtQuick控件

来自分类Dev

Utilizing QtQuick Controls from PyQt5

来自分类Dev

如何更改QtQuick 2窗口的标题?

来自分类Dev

QtQuick2拖动无框窗口

来自分类Dev

QtQuick.Controls 2 StackView和destroyOnPop

来自分类Dev

QtQuick 2-侧面板示例

来自分类Dev

QtQuick2-自定义MessageBox

来自分类Dev

QtQuick.Controls 2 StackView和destroyOnPop

来自分类Dev

在C ++中被动使用QtQuick / QML

来自分类Dev

错误:QOpenGLShader:无法创建着色器-使用Qt5.2 Mingw OpenGL编译QtQuick应用程序时

来自分类Dev

如何使用qt5(QtQuick 2.1)及更高版本在窗口上打印度数符号

来自分类Dev

与Qt 4(QtQuick 1.x)和Qt 5(QtQuick 2.x)兼容的C ++ / QML项目

来自分类Dev

使用QtQuick.Controls 2单击QML TableView获取行

来自分类Dev

如何在QT 5.1.1上安装QtQuick 1.1

来自分类Dev

如何在QT 5.1.1上安装QtQuick 1.1

来自分类Dev

从普通 QML Window 类生成 QtQuick UI 文件

来自分类Dev

Ubuntu 14.04上的“未安装模块QtQuick.Controls”错误

来自分类Dev

Windows上下载的QtQuick 2文件大小不同

来自分类Dev

QtQuick2:处理ScrollView中的onWheel事件

来自分类Dev

QtQuick Controls 2 的默认键盘交互是如何指定的?