前言:
今天各位老铁们对“遍历qtreeview节点”大约比较看重,我们都需要了解一些“遍历qtreeview节点”的相关知识。那么小编在网摘上收集了一些有关“遍历qtreeview节点””的相关文章,希望姐妹们能喜欢,各位老铁们一起来了解一下吧!本篇介绍PyQt5中的两大类,一类是ItemViews,包括QListView,QTreeView和QTableView,另一类是QListWidget,QTreeWidget和QTableWidget。
本篇介绍QListWidget的使用,演示添加项、删除项、插入项。主要还是上一篇介绍的QAction。
新建界面
1、QToolBox
窗口左侧是一个QToolBox组件,可鼠标右击之后Insert Page添加分组。常用属性:
cucurrenIndex:当前分组的编号,可通过值索引分组页面。currentItemText:当前分组的标题。currentItemName:当前分组对象名称。currentItemIcon:为当前分组设置图标。QTabWidget2、QTabWidget
窗口右侧是一个QTabWidget组件与ToolBox类似可通过Insert Page添加分组。常用属性:
tabPosition:页标签的位置,东西南北四个方位。currenIndex:当前页的编号,可通过值索引分组页面。currentTabText:当前页的标题。currentTabName:当前页对象名称。currentTabIcon:为当前页设置图标。3、QListWidget
在QTabWidget中放置一个QListWidget及其他的的toolButton,QListWidget是一个存储多个项的列表组件,每一个项时QListWidgetItem类型的对象。
双击ListWidget,可以打开项编辑器。
flags属性中的一些标志:
Selectable:项可被选择。Editable:项可被编辑。DragEnable:项可被拖动。DropEnable:项可以接受拖放的项。UserCheckable:项可被复选,类似于CheckBox。Enable:项被使能。创建QAction
给toolButton按钮添加下拉菜单
def creatSelectionPopMenu(self): menuSelection = QMenu(self) menuSelection.addAction(self.actSelAll) menuSelection.addAction(self.actSelNone) menuSelection.addAction(self.actSelInv) self.btnSelection.setPopupMode(QToolButton.MenuButtonPopup) self.btnSelection.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) self.btnSelection.setMenu(menuSelection)toolButton关联QAction
使用setDefaultAction()函数为一个toolButton设置Action之后,将自动获取Action的属性。
def setActionForBtn(self): self.btnListInit.setDefaultAction(self.actInitList) self.btnListClear.setDefaultAction(self.actDelList) self.btnListInsert.setDefaultAction(self.actInsItem) self.btnListAppend.setDefaultAction(self.actAddItem) self.btnListDelete.setDefaultAction(self.actDelItem) self.btnSelAll.setDefaultAction(self.actSelAll) self.btnSelInvs.setDefaultAction(self.actSelInv) self.btnSelNone.setDefaultAction(self.actSelNone)QListWidget操作初始化列表槽函数,将listWidget内的项全部删除,然后添加10个项。
def actListInit_triggered(self): self.listWidget.clear() for i in range(10): itemStr = "Item %d" % i aItem = QListWidgetItem() aItem.setText(itemStr) aItem.setCheckState(Qt.Checked) self.listWidget.addItem(aItem)
插入项,使用insert Item()函数在选定的行之前插入项。
def actListInsert_triggered(self): aItem = QListWidgetItem() aItem.setText("Insert Item") aItem.setCheckState(Qt.Checked) aItem.setFlags(Qt.ItemIsSelectable | Qt.ItemIsUserTristate | Qt.ItemIsEnabled | Qt.ItemIsEditable) currentRow = self.listWidget.currentRow() self.listWidget.insertItem(currentRow, aItem)
添加项,在列表最后添加项。
def actListAppend_triggered(self): aItem = QListWidgetItem() aItem.setText("Append Item") aItem.setCheckState(Qt.Checked) aItem.setFlags(Qt.ItemIsSelectable | Qt.ItemIsUserTristate | Qt.ItemIsEnabled | Qt.ItemIsEditable) self.listWidget.addItem(aItem)
删除和清空列表。
def actListClear_triggered(self): self.listWidget.clear()def actListDelete_triggered(self): row = self.listWidget.currentRow() self.listWidget.takeItem(row)
遍历并选择项
界面上的“全选”等三个按钮用于遍历列表框里的项并设置状态。
def btnSelAll_triggered(self): for i in range(self.listWidget.count()): aItem = self.listWidget.item(i) aItem.setCheckState(Qt.Checked)def btnSelNone_triggered(self): for i in range(self.listWidget.count()): aItem = self.listWidget.item(i) aItem.setCheckState(Qt.Unchecked)def btnSelInvs_triggered(self): for i in range(self.listWidget.count()): aItem = self.listWidget.item(i) if aItem.checkState() != Qt.Checked: aItem.setCheckState(Qt.Unchecked) else: aItem.setCheckState(Qt.Unchecked)
QListWidget信号
QListWidget在选择项改变时候,会发生两个信号:
currentRowChanged(int),发射当前行号。current Item Changed(current, previous),current是当前项,previous是前一项。
在选择项发生改变时候在上面的lineEdit中显示当前项和前一项。
def currentItemChanged(self, current, previous): strInfo = '' if current is not None: if previous is None: strInfo = "当前:" + current.text() else: strInfo = "前一项:" + previous.text() + " 当前项:" + current.text() self.lineEdit.setText(strInfo)鼠标右键添加快捷菜单
每个从QWidget继承的类都有customContexMenuRequested()信号。这个信号会在鼠标右击时发射。
def listWidget_customContexMenuRequested(self, pos): menuList = QMenu() menuList.addAction(self.actInitList) menuList.addAction(self.actDelList) menuList.addAction(self.actInsItem) menuList.addAction(self.actAddItem) menuList.addAction(self.actDelItem) menuList.addSeparator() menuList.addAction(self.actSelAll) menuList.addAction(self.actSelNone) menuList.addAction(self.actSelNone) menuList.exec(QCursor.pos()) menuList.show()
注意:只要从QWidget继承的类才有这个功能。
一个简单的案例介绍QListWidget的使用。如果需要源代码可关注私聊,感谢支持!!!!