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其他表格操作的方法可以参考QT中QTableView的说明,自己修改成python语句就可以了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()#返回表格被选中列 数值
0 0
- PYQT笔记——QTableView
- PyQT——QTableView的使用
- PyQt QTableView嵌入QComboBox
- PyQt QTableView嵌入QCheckBox
- PyQt QTableView嵌入QComboBox
- PYQT笔记——QFileDialog
- PyQt学习笔记(16)——QTreeWidget
- PyQt学习笔记——常用控件
- QT——QTableView
- PyQt学习笔记(1)——Hello world
- PyQt学习笔记(2)——Dumb Dialogs
- PyQt学习笔记(3)——Standard Dialogs
- PyQt学习笔记(4)——Smart Dialogs
- PyQt学习笔记(5)——Mian Window
- PyQt学习笔记(6)——Actions and Key Sequences
- PyQt学习笔记(7)——Qt Designer(1)
- PyQt学习笔记(7)——Qt Design…
- PyQt笔记001——入门小窗口
- WordCount 到 Hdfs
- Axure8.0基础教程(41-50)新手必须掌握的基础操作
- Android处理未捕获的异常Application应用生命周期变量
- Android 中获取设备的宽高
- 第三篇 Android Bootloader 之 U-boot
- PYQT笔记——QTableView
- Ubuntu交叉工具链配置
- 5.2.2中国剩余定理
- kali 简单安装中文输入法
- DM8168 不容错过的创龙达芬奇开发板
- 【Linux内核设计与实现】进程调度
- Hive定期抽取hbase的解决办法
- 使用简单 好看的CSS加载动画源码
- Notification使用详解之一:基础应用