QTableView setModel (2)

代码:

# -*- coding: utf-8 -*-
"""
@author: Taar
"""

#conversion of https://github.com/openwebos/qt/tree/master/examples/tutorials/modelview/2_formatting

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt as qt
from PyQt5.QtWidgets import QHeaderView


class MyModel(QtCore.QAbstractTableModel):
    def __init__(self,parent):
        super(MyModel,self).__init__(parent)
    def rowCount(self,n):
        return 2
    def columnCount(self,n):
        return 3
    def data(self,index,role):
        row = index.row()
        col = index.column()
        print('row {}, col {}, role {}'.format(row,col,role))
        if role == qt.DisplayRole:
            if row == 0 and col == 1:
                return '<--left'
            if row == 1 and col == 1:
                return 'right-->'
            return 'Row{}, Column{}'.format(row+1,col+1)
        elif role == qt.FontRole:
            if row == 0 and col == 0: #change font only for cell(0,0)
                boldFont = QtGui.QFont()
                boldFont.setBold(True)
                return boldFont
        elif role == qt.BackgroundRole:
            if row == 1 and col == 2: #change background only for cell(1,2)
                redBackground = QtGui.QBrush(qt.red)
                return redBackground
        elif role == qt.TextAlignmentRole:
            if row == 1 and col == 1: #change text alignment only for cell(1,1)
                return qt.AlignRight + qt.AlignVCenter
        elif role == qt.CheckStateRole:
            if row == 1 and col == 0: #add a checkbox to cell(1,0)
                return qt.Checked

if __name__ == '__main__':
    app = QtWidgets.QApplication.instance()
    if app is None:
        app= QtWidgets.QApplication(sys.argv)
    tableView = QtWidgets.QTableView()
    myModel = MyModel(None)
    tableView.setModel(myModel)
    tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
    tableView.show()
    tableView.resize(560, 200)
    app.exec_()
    

运行效果:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: QTableViewsetModel函数是用来设置数据模型的。它接受一个QAbstractItemModel类型的参数,用于提供数据和元数据给QTableView显示。通过设置不同的数据模型,可以实现不同的数据显示方式和交互方式。 ### 回答2: qtableview setmodel 是 Qt 框架中用于设置表格视图(QTableView)数据模型的方法。在 Qt 框架中,QTableView 是用于显示表格数据的控件,而 QAbstractItemModel 则是用于提供表格数据的抽象数据模型类。 通过将 QAbstractItemModel 类或其子类设置为 QTableView 控件的数据模型,并使用 setModel() 方法将其与 QTableView 控件相关联,就可以轻松地显示表格数据。在将数据模型设置为 QTableView 控件的过程中,可以通过 setModel() 方法将其它设置(如视图行、列表示例大小等)与 QTableView 控件相关联。 基于 QAbstractItemModel 模型的 QGraphicsScene(Qt5.1 之后 QGraphicsScene 已经不再建议使用),QStandardItemModel 和 QStringListModel 都可以用来将数据与 QTableView 视图相关联。 此外,对于一些自定义的表格数据,开发者也可以通过自巧手编写符合 QAbstractItemModel 规范的子类来实现数据绑定。QAbstractTableModel 和 QAbstractListModel 是 Qt 框架提供的较为常见的两类数据模型,它们都可以继承 QAbstractItemModel 实现数据绑定。 总的来说,qtableview setmodel 是 Qt 框架中关于设置表格视图模型的重要方法之一,它使得开发者可以轻松地将数据与 QTableView 控件相关联,为表格数据的处理和显示提供了极大的便利性和灵活性。 ### 回答3: QTableView是Qt框架中的一种用来展示表格数据的控件,它可以通过setModel函数来设置数据模型。setModel函数的作用是将对应的数据模型与QTableView控件关联起来,从而可以通过数据模型对表格数据进行操作。 在使用setModel函数时,需要首先创建一个数据模型对象,这个数据模型对象是QAbstractItemModel类的子类,可以使用系统提供的QStandardItemModel、QSqlQueryModel等现成的模型类或者自定义一个数据模型类。 在创建好数据模型对象后,使用setModel函数将这个数据模型对象与QTableView控件关联起来,这样就会将数据模型中存储的数据显示在表格中。一旦关联完成后,通过对数据模型对象的操作,可以对表格的数据进行增删改查等操作,同时也会自动更新表格的显示。 需要注意的是,在使用setModel函数时,需要将数据模型对象指针传递给setModel函数,同时也需要确保数据模型对象的作用域与QTableView控件的生命周期相同,否则可能会导致程序崩溃等异常状况。 总之,QTableView setModel函数是连接数据模型与表格控件之间的桥梁,通过这个函数可以实现对表格数据的操作和管理。在实际开发中,需要掌握好这一函数的使用方法,以便能够更加有效地完成表格数据的展示和管理工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值