使QTableWidget 增加自动添加行,单击删除行的功能.
来源:互联网 发布:中奖概率算法 编辑:程序博客网 时间:2024/05/20 07:49
# -*- coding:utf-8 -*-'''Created on 2015年8月4日@author: DXLCopyright (C) 2004-2012 Shandong Leadom Software Development Co.,Ltd'''from PyQt4 import QtGui,QtCorefrom ui import resource_rcclass TableWidgetHelper(QtCore.QObject): def __init__(self,parent,del_column=None): QtCore.QObject.__init__(self,parent) if not isinstance(parent,QtGui.QTableWidget) or parent.columnCount()<=0: print ' Parent of TableWidgetHelper must is QTableWidget and its has one column at last.' self._parent = None else: self._parent = parent self._parent.currentCellChanged.connect(self.onItemChanged) self._parent.cellClicked.connect(self.onClickedItem) self._parent.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) #self._addActions = [] if isinstance(del_column,int) or del_column is None: self._del_column = del_column if self._del_column is not None and self._parent: if not self._parent.rowCount(): self.onItemChanged(0,0) del_all_action = QtGui.QAction(u"清空",self._parent) del_all_action.triggered.connect(self.onDelAll) del_select_action = QtGui.QAction(u"删除所选",self._parent) del_select_action.triggered.connect(self.onDelSelect) insert_action = QtGui.QAction(u"增加一行",self._parent) insert_action.triggered.connect(self.onAddItem) self._parent.addAction(del_all_action) self._parent.addAction(del_select_action) self._parent.addAction(insert_action) else: print 'Variant of del_column hast unexcept type.' self._del_column = None def onDelAll(self): if self._parent: self._parent.setRowCount(0) pass def onAddItem(self): if self._parent: r = self._parent.rowCount()-1 if self._parent.rowCount() else 0 self.onItemChanged(r, 0) pass def onDelSelect(self): select_rows = set() for rg in self._parent.selectedRanges(): for i in range(rg.topRow(),rg.bottomRow()+1): select_rows.add(i) select_rows = list(select_rows) select_rows.sort(reverse=True) for index in select_rows: self._parent.removeRow(index) pass def onClickedItem(self,r,c): if self._del_column is None or not self._parent: return if c == self._del_column: ret = QtGui.QMessageBox.warning(self._parent, u'警告', u'是否删除第%s行?'%(r+1,), QtGui.QMessageBox.Yes|QtGui.QMessageBox.No) if ret == QtGui.QMessageBox.Yes: self._parent.removeRow(r) return else: return def onItemChanged(self,r,c): if self._del_column is None or not self._parent: return if r + 1 >= self._parent.rowCount(): #for i in range(self._parent.columnCount()): self._parent.insertRow(self._parent.rowCount()) item = QtGui.QTableWidgetItem(QtGui.QIcon(':/icon/del.png'),'') self._parent.setItem(self._parent.rowCount()-1,self._del_column,item) if __name__ == "__main__": a = QtGui.QApplication([]) w = QtGui.QTableWidget() w.setColumnCount(5)# w.setRowCount(10)# for i in range(10):# for j in range(5):# insert_str = "(%s,%s)"%(i,j)# item = QtGui.QTableWidgetItem(insert_str)# w.setItem(i,j,item) w_helper = TableWidgetHelper(w,4) w.show() a.exec_()
0 0
- 使QTableWidget 增加自动添加行,单击删除行的功能.
- QTableWidget行选中/删除/添加行
- QTableWidget行选中/删除/添加行
- QTableWidget行选中/删除/添加行
- QTableWidget删除行出错
- 表格自动增加删除行
- js动态增加(删除)table数据行的功能
- QTableWidget设置单击某个单元格时选中整行
- javascript 自动添加删除行
- QTableWidget自动调整列宽和行高
- 不用ajax也能实现的功能!单击添加新行时可以删除这一行信息的源码
- 选中gridview其中一行单击删除按钮实现行删除功能
- 常用的js动态增加(删除)table数据行的功能
- 鼠标单击的行反色,删除选定的行
- jqgrid 实现增加,删除,修改的功能
- GridView的编辑、增加、删除功能
- FMDB增加修改删除功能的实现
- Android Fragment的增加,删除,添加
- Linux服务器编程(1)
- Swift2.0中Json数据的解析教程
- 汉字按首字母排序
- 解决eclipse无法查看v4,v7-appcompat源码
- 换行符
- 使QTableWidget 增加自动添加行,单击删除行的功能.
- 在android系统中添加hello程序
- Android.mk编译APK范例
- mysql创建存储过程
- OpenVPN客户端安装
- 接触AngularJS
- [LeetCode]Remove Duplicates from Sorted Array
- 项目笔记
- linux 64位下的 mongodb 安装