上一篇已经实现了委托类,下面实现模型类的数据处理
1、创建模型类
创建模型类时需要也是根据个人需求的功能逻辑来实现
QAbstractListModel类官方解释:QAbstractListModel类提供了一个抽象模型,可以继承这个抽象模型来创建一维列表模型。
QAbstractListModel为模型提供了一个标准接口,这些模型将其数据表示为简单的非分层项序列。 它不直接使用,但必须子类化。
由于模型提供了一个比QAbstractItemModel更专门的接口,它不适合与树视图一起使用; 如果你想要提供一个模型,你需要子类QAbstractItemModel。 如果您需要使用许多列表模型来管理数据,那么子类化QAbstractTableModel可能更合适。
通过继承这个类并实现所需函数的最少数量,可以创建简单的模型。 例如,我们可以实现一个简单的只读的基于qstringlist的模型,它向QListView小部件提供字符串列表。 在这种情况下,我们只需要实现rowCount()函数来返回列表中的条目数,以及data()函数来从列表中检索条目。
因为模型表示一维结构,所以rowCount()函数返回模型中项目的总数。 columnCount()函数的实现是为了与所有类型的视图互操作性,但默认情况下会通知视图模型只包含一个列。
因我需要使用的数据和功能操作都在同一列绘制完成,所以只需要1列即可,选择QAbstractListModel更为方便
class CQuestionModel : public QAbstractListModel
{
Q_OBJECT
public:
// 按钮操作枚举
enum OperationButton {
OPT_EXPLAIN_MODE = 0,
OP