C++ 如何定义类似于QML TableViewColumn的列?

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 }; ...

我在WPF中使用MVVM,现在尝试使用Qt。Qt视图模型的概念对我来说很清楚(我希望如此)。尽管如此,我还是尝试使用c#风格,并将Qt设置为“可观察的集合”,这实际上是一个定义了单个角色的列表-一个指向对象的指针:

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; }