PyQt(Python+Qt)学习随笔:QStandardItemModel指定行和列创建模型后的数据项初始化的两种方法

Source

QStandardItemModel通过构造方法 QStandardItemModel(int rows, int columns, QObject parent = None)创建的模型实例,包含有rows行columns列的空项。这些项不但没有数据,而且通过模型的item(row, col) 方法返回的项为None。具体分析请见《PyQt(Python+Qt)学习随笔:QStandardItemModel指定行和列创建模型中的项以及索引》。

要对这些项进行初始化,有2种方法:

  • 跟不带行和列数创建的模型一样,构造QStandardItem实例后,使用模型的setItem方法,将项挂接到对应的父节点下的行号、列号指定位置
  • 通过行和列及父节点获取对应项的QModelIndex索引,然后通过模型的setData方法直接将对应项的数据指定为指定值

第一种方法与普通模型一样,无需再举例介绍,第二种方法的示例代码如下:

    def setItem(self,row,col):
        index = self.model.index(row, col)
        self.model.setData(index,f'({row},{col})')

可以看到,这种方法没有先创建QStandardItem实例,直接通过索引就可以成功赋值。
经老猿使用《PyQt(Python+Qt)学习随笔:QStandardItemModel指定行和列创建模型中的项以及索引》的验证方法,可以看到这样设置数据后,对应项可以通过模型的item方法正常获取。这表明这种方法会自动创建QStandardItem对象。

老猿Python,跟老猿学Python!

发布了728 篇原创文章 · 获赞 3452 · 访问量 39万+