gpt4 book ai didi

c++ - 如何在 Qt .js 文件中使用 C++ 枚举?

转载 作者:太空狗 更新时间:2023-10-29 21:09:55 24 4
gpt4 key购买 nike

我需要为多个 QML 文件创建一个具有多个共享函数的文件。

我试图创建一个 .js 文件,但似乎 C++ 枚举在这里不起作用。 FileSystemModel.TYPE_DIR 在这里未定义,而在 QML 中它在 import FileSystemModel 1.0

后工作正常
.pragma library

.import FileSystemModel 1.0 as FileSystemModel

function fsItemTypeToImage(type) {
console.log(FileSystemModel.TYPE_DIR)
switch (type) {
case FileSystemModel.TYPE_DIR:
return "/img/dir.png"
case FileSystemModel.TYPE_FILE:
return "/img/file.png"
}
return null
}

文件系统模型.h:

class FileSystemModel : public QAbstractListModel {
Q_OBJECT
public:
enum Roles { NameRole = Qt::UserRole + 1, SizeRole, DateRole, TypeRole };

enum ItemType {
TYPE_UNKNOWN = 0,
TYPE_FILE,
TYPE_DIR,
};
Q_ENUM(ItemType)

在main.cpp中注册:

qmlRegisterType<FileSystemModel>("FileSystemModel", 1, 0, "FileSystemModel");

最佳答案

当您调用 qmlRegisterType<FileSystemModel>("FileSystemModel", 1, 0, "FileSystemModel") 时你正在注册 FileSystemModel包含 FileSystemModel 的 QML 模块输入,所以在你的 js 中写 .import FileSystemModel 1.0 as FileSystemModel您实际上并没有导入您的类型,而是导入了 QML 模块,这就是它不起作用的原因。

在您的 js 文件中尝试更改 FileSystemModel.TYPE_DIRFileSystemModel.FileSystemModel.TYPE_DIR ,这应该可以解决问题。

关于c++ - 如何在 Qt .js 文件中使用 C++ 枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56564870/

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