gpt4 book ai didi

c++ - 将您自己的 QT C++ 数据模型与 QML 集成

转载 作者:行者123 更新时间:2023-11-28 05:25:44 25 4
gpt4 key购买 nike

我在将 C++ 数据模型暴露给 QML 中的 ListView 时遇到问题。 QML 找不到每一行的属性。

我有这个类(class)(QT 5.7):

class Identity : public QObject
{
Q_OBJECT
Q_PROPERTY(QString email READ email WRITE setEmail NOTIFY emailChanged);
Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged);
...
}

我有一个存储身份对象的模型类:

class Identities: public QAbstractItemModel {
Q_OBJECT

private:
QMap<QString,Identity*> identities_map;
...
}

我也在 main.cpp 中注册它:

qmlRegisterType<Identities>("project_identities",1,0,"Identities");

我的 main.qml 有这些定义:

Identities {
id: identidades
}
ListView {
anchors.fill: parent
model: identidades
delegate: Row {
Text { text: "Email: " + model.email}
}
}

现在的问题是,当我显示电子邮件和密码列表时,这是输出:

Email: undefined

我错过了什么?当我使用调试器调试我的代码时,正在执行的唯一方法是 Identities::rowCount()。 Identities::index() 和 Identities::data() 均未执行。

问题出在哪里?

最佳答案

如果模型中的角色已正确实现,您需要做的就是:

Text { text: "Email: "+ email}.

如果这不起作用,那么您的模型实现肯定有问题。

正如 GrecKo 在评论中指出的那样,model.role 格式实际上是可能的,但除非您有名称冲突,否则并不是真正必要的。

关于c++ - 将您自己的 QT C++ 数据模型与 QML 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40579910/

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