PYQT笔记——QTableView

来源:互联网 发布:河南昭大网络靠谱吗 编辑:程序博客网 时间:2024/05/24 05:43

PYQT笔记——QTableView

 

QTableView这个控件可以绑定一个模型数据用来更新控件上的内容

可用的模式有以下几个

// QStringListModel          存储一组字符串 

// QStandardItemModel        存储任意层次结构的数据 

// QDirModel              对文件系统进行封装 

// QSqlQueryModel           对SQL的查询结果集进行封装 

// QSqlTableModel           对SQL中的table进行封装 

// QSqlRelationalTableModel    对带有foreign key的SQL table进行封装 

// QSortFilterProxyModel       对另一个model执行sort and/or filter

下面使用QStandardItemModel这个模型来给QTableView绑定数据

方法:

class TableData():    def TableViewInit(self, tableView,Model):        '''表格初始化'''        try:            self.HeaderList = ["类型"]            for i in range(1, 13):                self.HeaderList.append("计数通道"+str((i+1)//2))            '表格初始化'            self.DataModel = Model            self.DataModel.setHorizontalHeaderLabels(self.HeaderList)#            self.DataModel.setItem(0, 0, QStandardItem("计数次数"))            self.DataModel.setItem(1, 0, QStandardItem("单次计数"))            self.DataModel.setItem(2, 0, QStandardItem("总计数"))            self.DataModel.setItem(3, 0, QStandardItem("总计数率"))            self.tableView = tableView            self.tableView.setModel(self.DataModel)            #下面代码让表格100填满窗口            self.tableView.horizontalHeader().setStretchLastSection(True)            self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)            return True        except Exception as e:            logging(e)    def Model_setItem(self, row, column, data):        '''表格添加数据:第row行,column列数据更改为data'''        self.DataModel.setItem(row, column, QStandardItem(data))

调用:

主窗口类中声明信号槽,这里必须在类的最开始声明信号,

注:这里为什么要用信号槽来更新数据,说明一下:

当你需要实时更新表格内的数据时,主UI线程需要接受信号才会更新,不然不能实现实时更新。这里用的比较多的就是在线程中更新数据时非常有用。

class mywindow(QMainWindow , Main_Show_Ui.Ui_mainWindow):    TableDataSignal = pyqtSignal(int, int, str)
通过执行下面语句:

self.TableData = TableData()#声明类self.Model_Data = QStandardItemModel(4, 13)#初始化一个模型QStandardItemModel,4行13列self.TableData.TableViewInit(self.tableView_Data,self.Model_Data)#调用类TableData中初始化表格函数self.TableDataSignal.connect(self.TableData.Model_setItem)#这里采用信号槽来绑定Model_setItem进行数据更新self.TableDataSignal.emit(0, 1, 'sdfsdf')#这里为表格添加一个数据,信号发送
结果如下图:



表格操作部分方法如下:

model = self.Model_Data
table = self.tableView_Data

model.rowCount()#返回总行数,model.columnCount()#返回总列数
model.headerData(i,Qt.Horizontal)#返回第i列表头内容
model.data(model.index(row, column))#返回第row行,第column列内容
model.removeRow(row)#移除某行
model.insertRow(row)#插入新行

#下面调用的时候是选中表格某个位置
table.currentIndex().row()#返回表格被选中行 数值table.currentIndex().column()#返回表格被选中列 数值

其他表格操作的方法可以参考QT中QTableView的说明,自己修改成python语句就可以了



0 0
原创粉丝点击