模型之间的通信
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。
我的程序以原始格式从文件加载记录(每行一条)。
我有一些以不同方式显示此数据的视图:
- 字节视图
- 十进制视图(通过对字节范围进行一些计算)
两个视图都必须提供编辑值的能力。
这是一些代码:
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。