龙空技术网

Python+PyQt5基础开发(8)

outlier1 129

前言:

今天各位老铁们对“遍历qtreeview节点”大约比较看重,我们都需要了解一些“遍历qtreeview节点”的相关知识。那么小编在网摘上收集了一些有关“遍历qtreeview节点””的相关文章,希望姐妹们能喜欢,各位老铁们一起来了解一下吧!

本篇介绍PyQt5中的两大类,一类是ItemViews,包括QListView,QTreeView和QTableView,另一类是QListWidget,QTreeWidget和QTableWidget。

本篇介绍QListWidget的使用,演示添加项、删除项、插入项。主要还是上一篇介绍的QAction。

新建界面

UI

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,可以打开项编辑器。

ListWidget

flags属性中的一些标志:

Selectable:项可被选择。Editable:项可被编辑。DragEnable:项可被拖动。DropEnable:项可以接受拖放的项。UserCheckable:项可被复选,类似于CheckBox。Enable:项被使能。创建QAction

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的使用。如果需要源代码可关注私聊,感谢支持!!!!

标签: #遍历qtreeview节点 #qtreeview 遍历 #qtreeview 遍历选中