gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:43:19 27 4
gpt4 key购买 nike

当尝试使用某些 Qt-5 类时,我遇到了崩溃。我第一次发现这个是在尝试使用 QFileSystemModel。尝试立即调用 setRootPath 会导致崩溃。除了 QFileIconProvider::icon() 是发生段错误之前调用的最后一个函数外,调用堆栈没有太大帮助(所有都是汇编代码)。

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

我使用的是 QtCreator 4,项目类型是“Qt Quick Application”。当我改为创建“Qt Widgets Application”类型的项目时,我可以毫无问题地使用 QFileIconProviderQFileSystemModel

这是我没有想法的地方。我对 Qt 环境的了解还不够,不知道这两种类型的项目之间有什么区别会导致段错误。

两个项目使用相同的工具包(相同的 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();
}

对于如何调试该困惑情况的任何帮助或指示,我将不胜感激。

最佳答案

虽然听起来令人困惑,但 QFileSystemModel 是 QtWidgets 的一部分,因此需要您创建 QApplication 实例,而不是 QGuiApplication

关于c++ - 在 QtQuick 2 应用程序中使用某些 Qt5 类时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38032176/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com