功能粗模如下
实例化一个Qtable,并设置列数
self.table = QtWidgets.QTableWidget()
self.table.setColumnCount(4)
self.table.setStyleSheet(
'''QWidget{min-height: 20px; font-size:10pt;border-radius:3px;background-color:rgb(240,248,255);color: rgb(0,0,0)}''')
setColumnCount(),设置表格的列数,这里要做一个动态添加数据的功能,期望表格行数随数据添加而递增,所以只设置了固定列数。
添加数据按钮,并绑定槽函数
self.add_btn = QPushButton('添加定时器')
self.add_btn.setStyleSheet('''QWidget{ min-height: 20px; font-size:10pt; border:2px solid #F76677;border-radius:5px;}
QWidget:hover{background-color:rgb(225, 225, 225);}
QWidget:pressed{background-color:rgb(205, 205, 205);}
''')
self.add_btn.clicked.connect(lambda: self.add_timer(self.add_btn))
按钮触发函数
def add_timer(self,btn):
if len(self.filePathLable.text()) > 0 and (self.filePathLable.text() != "请选择文件夹路径"):
col_1 = QtWidgets.QTableWidgetItem(self.datatime_week)
col_2 = QtWidgets.QTableWidgetItem(self.datatime_time)
col_3 = QtWidgets.QTableWidgetItem(self.filePathLable.text())
deleteButton = QtWidgets.QPushButton("删除定时器")
deleteButton.clicked.connect(self.delTimer)
self.table.insertRow(int(self.table.rowCount()))
self.table.setItem(self.index, 0, col_1)
self.table.setItem(self.index, 1, col_2)
self.table.setItem(self.index, 2, col_3)
self.table.setCellWidget(self.index, 3, deleteButton)
self.table.update()
self.index += 1
else:
QtWidgets.QMessageBox.information(self, "提示", "请选择一个目录!", QtWidgets.QMessageBox.Yes)
self.svn_up()
这里要注意,在
给单元格添加完数据后,表单并不会实时刷新,所以需要用self.table.viewport().update()函数来刷新表单。一开始写的时候,直接给表单添加数据,然后获取单元格值,会发现取不到值,
这是因为在实例化表单对象时,没有设置表单行数,所以此时表单行数为0,取不到数据。
在添加数据前,先添加空白行,rowCount()获取当前表单行数,insertRow(int)在此行后面添加新行,即可解决添加数据的同时获取不到单元格值的问题。