我在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的所有属性)?