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

时间:2016-04-11 19:40:43

标签: c++ qt mvvm qml qtableview

我在WPF中使用MVVM,现在尝试使用Qt。 Qt View Model概念对我来说很清楚(我希望)。我仍然尝试使用c#style并使Qt成为“可观察的集合”,这实际上是一个定义了单个角色的列表 - 指向对象的指针:

class ObjectsListModel : public QAbstractListModel {
Q_OBJECT
public:
    enum RoleNames {
        ObjectRole = Qt::UserRole + 1
    };

... 

    QList<QObject*> data_;
};

因此第一个问题:是否已经有了标准的实施方案?

然后我定义了一个具有2个属性的类:

class HumanModel : public QObject
{
Q_OBJECT
public:
Q_PROPERTY(QString name READ getName WRITE setName NOTIFY nameChanged);
Q_PROPERTY(QString nickname READ getNickname WRITE setNickname NOTIFY nicknameChanged);
...

然后在QML中我创建了一个tableview:

TableView {     
    model: my_observable_collection
    TableViewColumn { role: "name"; title: "Name"; width: 50; }
    TableViewColumn { role: "nickname"; title: "Nickname"; width: 50; }

它工作得非常好,所有通知,更改列表内容等等都是完美的。

现在我想使用相同的列表模型和HumanModel的QTableView(非QML,简单的Qt UI)。是否有可能(没有创建新的“table”-viewmodel,它复制了HumanModel的所有属性)?

0 个答案:

没有答案