模型之间的通信

Communication between models

我的程序以原始格式从文件加载记录(每行一条)。

我有一些以不同方式显示此数据的视图:

两个视图都必须提供编辑值的能力。

这是一些代码:

class Record
{
public:
  void setByte (int position, Byte byte);
  void setValue (ValueType type, Value value);

  Byte getByte (int position) const;
  Value getValue (ValueType type) const;

private:
  RawData data;
}

我正在

中加载记录
QVector<Record> records;

字节视图是一个简单的 table,带有十六进制字节(行 - 行号,列 - 字节位置)。十进制视图也是 table(行 - 行号,一列 - 值)。

那么,为我的视图设计能够相互通信的模型的最佳方法是什么(f.e。当从其中一个视图修改数据时发送信号)?

当您使用 Qt 时,通常最好子class Qt 自己的模型之一。通过这种方式,您将免费获得大量视图小部件,同时通过遵循与您使用的其他工具包相同的标准,使您的代码更加一致。 Qt's documentation 有一些准则说明了 methods/signals/slots 您必须实施的准则。

一些 class 要看的内容:QAbstractItemModel, QAbstractTableModel and QAbstractListModel

对于视图端,您应该更喜欢使用 Qt 提供的小部件,如有必要,实施 delegate 以更改其外观。

在你的具体情况下,我将子class QAbstractTableModel,并将你的记录包装在这个class。