QTreeWidget 获取被双击的子项的层次路径

QTreeWidget 获取被双击的子项的层次路径

 

 

from PyQt5.QtWidgets import (QApplication, QWidget, QHBoxLayout,
                                QTreeWidget, QTreeWidgetItem,
                                QGroupBox)
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtCore import QSize

class  Bar_Navigation(QWidget):
        def  __init__(self):
            super(Bar_Navigation, self).__init__()
            self.setMinimumHeight(600);
            self.setMinimumWidth(800);
            
            ##layout_main.setMargin(5)
            ##layout_main.setSpace(5)
            self.creat_main_layout()
            self.creat_bar_navigation()
            self.creat_left_box()
         
        def get_bar_list(self):
           
            bar_list_item = []
            bar_list_1 = ["订货管理", 
                                            ["客户订货", "库存订货", "供货商订货"]
                                    ]
            bar_list_2 = ["入库管理", 
                                            ["采购入库", "订货入库", "其它入库"]
                                    ]
            bar_list_item.append(bar_list_1)
            bar_list_item.append(bar_list_2)
            return  bar_list_item
            
        def creat_main_layout(self):  
            self.layout_main = QHBoxLayout()
            self.setLayout( self.layout_main)
         
        def creat_bar_list(self, data):
            
            for item in data:
                item_1 =  QTreeWidgetItem( self.tree_Navigation);            
                ##item_1.setText(0,item[0])
                
          ## 设置节点的打开/关闭状态下的不同的图片 icon = QIcon() ##节点打开状态 icon.addPixmap(QPixmap("./logo2.png"), QIcon.Normal, QIcon.On) ##节点关闭状态   icon.addPixmap(QPixmap("./logo1.png"), QIcon.Normal, QIcon.Off) item_1.setIcon(0, icon) for item_item in item[1]: item_1_1 = QTreeWidgetItem( item_1); item_1_1.setText(0,item_item) self.tree_Navigation.addTopLevelItem(item_1); def creat_bar_navigation(self): self.tree_Navigation = QTreeWidget() self.tree_Navigation.setHeaderLabel("左侧导航栏"); self.tree_Navigation.setColumnCount(1) self.tree_Navigation.setMaximumWidth(150); icon_size = QSize(100, 30) self.tree_Navigation.setIconSize(icon_size) ##如果treewidget就一列,该列的宽度默认等于treewidget的宽度,两列以上的话才起作用. ##self.tree_Navigation.setColumnWidth(0,100); data = self.get_bar_list() self.creat_bar_list(data) self.layout_main.addWidget(self.tree_Navigation) ## QModelIndex ##self.tree_Navigation.doubleClicked.connect(self.showModelSelected) ## QTreeWidgetItem self.tree_Navigation.itemDoubleClicked.connect(self.showSelected) ## QModelIndex def showModelSelected(self, modelIndex): print( modelIndex.row(), modelIndex.column()) ## itemObj:QTreeWidgetItem def showSelected(self, item, column): ##获得父节点 parent=item.parent() ## 注:本例的深度只有2,因此只有index_top,index_row两个变量表示路径 ##根节点上的索引 ## 合理值:非负整数 index_top = 0 ## 子节点上的索引 ##如果为-1则标示是根节点上的项;如果不是-1则标示在子节点上 ## 合理值:非负整数 index_row = -1 ## 如果是要判断是否为None,则: if parent is None: index_top= self.tree_Navigation.indexOfTopLevelItem(item) else : index_top = self.tree_Navigation.indexOfTopLevelItem(parent) index_row=parent.indexOfChild(item)##获得节点在父节点中的行号(从0开始) print(index_top, index_row) def creat_left_box(self): self.box_left = QGroupBox('left party') self.layout_main.addWidget(self.box_left) if __name__ == "__main__": import sys app = QApplication(sys.argv) window = Bar_Navigation() window.show() sys.exit(app.exec_())

 

个人注解:   

①、treeWidget.setColumnWidth(0,100)

如果treewidget就一列,该列的宽度默认等于treewidget的宽度,两列以上的话才起作用,

 

②、如果是treeview获取点击的层级路径:

  modelindex.parent()可以获得其上级。

转载于:https://www.cnblogs.com/ribavnu/p/4650658.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109396.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 一个高效快捷的排序方法

    一个高效快捷的排序方法

    2021年9月27日
    54
  • SuperGO外设下载地址安装,穿透模式使用

    SuperGO外设下载地址安装,穿透模式使用SuperGo下载地址安装使用教程这里给大家分五个步骤进行教学第一步:打开MM/纵行地图/SuperGo软件的下载网站www.tngps.com(用Safari浏览器进行操作),在APPstore下载并安装“TestFlight”软件,安装以后就不用管这个软件了第二步:下载完“TestFlight”后,返回刚才的网站点击“开始测试”,下载MM软件并安装。第三步:打开MM/纵行地图/SuperGo软件后插入设备,等待数秒等待软件连接成功后进入操作界面。第四步:在“搜索..

    2022年6月25日
    59
  • 本地Mysql忘记密码的修改方法(windows)

    本地Mysql忘记密码的修改方法(windows)你是否有忘记密码的尴尬你是否有连Mysql的安装路径都忘了的尴尬别问我是怎么知道的,哈哈哈话不多说,步入正题吧!如果你记得mysql的安装路径的话,直接跳过步骤1231.键盘Windows+R,输入services.msc然后回车;2.找到Mysql,右键Mysql找到属性,打开就能看到可执行文件的路径了;PS:可以切换到大写,然后一直按MMM…(祖传妙方)3.进入bin目录下,按住shift+鼠标右键,点击打开“在此处打开Powershe.

    2022年6月16日
    39
  • vue 部署上线清除浏览器缓存「建议收藏」

    vue 部署上线清除浏览器缓存「建议收藏」vue项目打包上线之后,每一次都会有浏览器缓存问题,需要手动的清除缓存。这样用户体验非常不好,所以我们在打包部署的时候需要尽量避免浏览器的缓存。下面是我的解决方案:一、修改根目录index.html在head里面添加下面代码<metahttp-equiv=”pragram”content=”no-cache”><metahttp-equiv=”cache-control”content=”no-cache,no-store,must-revalidate”>

    2022年7月18日
    15
  • Watcher分集介绍(Weight Watcher)

    TextWatcher是packageandroid.text包下的一个接口。这个接口继承了另外一个接口NoCopySpan。TextWatcher接口里主要是定义了三个抽象方法:下面是它的基本用法:TextWatcherfieldValidatorTextWatcher=newTextWatcher(){      @Override   

    2022年4月18日
    243
  • ubuntu下为anaconda安装opencv[通俗易懂]

    ubuntu下为anaconda安装opencv[通俗易懂]终端执行:pipinstallopencv-python

    2022年10月21日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号