C++ 如何定义类似于QML TableViewColumn的列?
我在WPF中使用MVVM,现在尝试使用Qt。Qt视图模型的概念对我来说很清楚(我希望如此)。尽管如此,我还是尝试使用c#风格,并将Qt设置为“可观察的集合”,这实际上是一个定义了单个角色的列表-一个指向对象的指针:C++ 如何定义类似于QML TableViewColumn的列?,c++,qt,mvvm,qml,qtableview,C++,Qt,Mvvm,Qml,Qtableview,我在WPF中使用MVVM,现在尝试使用Qt。Qt视图模型的概念对我来说很清楚(我希望如此)。尽管如此,我还是尝试使用c#风格,并将Qt设置为“可观察的集合”,这实际上是一个定义了单个角色的列表-一个指向对象的指针: class ObjectsListModel : public QAbstractListModel { Q_OBJECT public: enum RoleNames { ObjectRole = Qt::UserRole + 1 }; ...
class ObjectsListModel : public QAbstractListModel {
Q_OBJECT
public:
enum RoleNames {
ObjectRole = Qt::UserRole + 1
};
...
QList<QObject*> data_;
};
然后在QML内部,我创建了一个tableview:
TableView {
model: my_observable_collection
TableViewColumn { role: "name"; title: "Name"; width: 50; }
TableViewColumn { role: "nickname"; title: "Nickname"; width: 50; }
它工作得非常好,所有通知、列表内容的更改等都非常完美
现在我想使用相同的列表模型和HumanModel使用QTableView(非QML,简单的QTUI)。是否可能(不创建新的“表”-复制HumanModel所有属性的viewmodel)?是。(但我不知道这个答案是否足够)您是否阅读了文档并进行了尝试?嗯,是的,我阅读了规范,但没有找到合适的方法在Qt和QTableView中使用我的模型(在QML中运行良好)。
TableView {
model: my_observable_collection
TableViewColumn { role: "name"; title: "Name"; width: 50; }
TableViewColumn { role: "nickname"; title: "Nickname"; width: 50; }