我的程序以原始格式从文件加载记录(每行一个)。
我有一些用于以不同方式显示此数据的视图:
两个视图都必须提供编辑值的功能。
以下是一些代码:
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;
Byte View是一个十六进制字节的简单表(行号,列 - 字节位置)。十进制视图也是一个表(行号,一列 - 值)。
那么,为我的视图设计模型的最佳方法是能够相互通信(例如,当从其中一个视图修改数据时发送信号)?
答案 0 :(得分:2)
当您使用Qt时,通常最好将Qt自己的模型之一进行子类化。这样,您将免费获得大量视图小部件,同时遵循与您使用的其他工具包相同的标准,使您的代码更加一致。 Qt's documentation有一些指导说明您必须实施哪些方法/信号/插槽。
要查看的一些课程:QAbstractItemModel,QAbstractTableModel和QAbstractListModel
对于视图方面,您应该更喜欢使用Qt提供的小部件,如果需要,可以实现delegate来改变它的外观。
在您的具体情况下,我将继承QAbstractTableModel,并将您的记录包装在此类中。