1212import os
1313
1414from PyQt5 .QtCore import Qt
15- from PyQt5 .QtGui import QStandardItemModel , QStandardItem
16- from PyQt5 .QtWidgets import QTreeView
15+ from PyQt5 .QtGui import QStandardItemModel , QStandardItem , QCursor
16+ from PyQt5 .QtWidgets import QTreeView , QMenu , QAction
1717
1818from Utils import Constants
1919from Utils .CommonUtil import AppLog , Signals
@@ -29,6 +29,7 @@ class TreeView(QTreeView):
2929 def __init__ (self , * args , ** kwargs ):
3030 super (TreeView , self ).__init__ (* args , ** kwargs )
3131 self ._initModel ()
32+ self ._initMenus ()
3233 self ._initSignals ()
3334
3435 def _initModel (self ):
@@ -38,11 +39,41 @@ def _initModel(self):
3839 self ._fmodel .setSourceModel (self ._dmodel )
3940 self .setModel (self ._fmodel )
4041
42+ def _initMenus (self ):
43+ """初始化菜单"""
44+ self ._menu = QMenu (self .tr ('Catalogs' ), self )
45+ self ._actRun = QAction (self .tr ('Run File' ), self ._menu )
46+ self ._actFolder = QAction (self .tr ('Open Folder' ), self ._menu )
47+ self ._menu .addAction (self ._actRun )
48+ self ._menu .addAction (self ._actFolder )
49+
4150 def _initSignals (self ):
4251 Signals .itemJumped .connect (self .onItemJumped )
4352 Signals .filterChanged .connect (self ._fmodel .setFilterRegExp )
4453 self .clicked .connect (self .onClicked )
4554 self .doubleClicked .connect (self .onDoubleClicked )
55+ self .customContextMenuRequested .connect (self ._showMenu )
56+ self ._actRun .triggered .connect (self .doRunFile )
57+ self ._actFolder .triggered .connect (self .doOpenFolder )
58+
59+ def _showMenu (self , pos ):
60+ """右键显示菜单
61+ :param pos:
62+ """
63+ mindex = self .indexAt (pos )
64+ if not mindex or not mindex .isValid ():
65+ return
66+ self ._menu .exec_ (QCursor .pos ())
67+
68+ def doRunFile (self , triggered ):
69+ """运行文件
70+ :param triggered:
71+ """
72+
73+ def doOpenFolder (self , triggered ):
74+ """打开所在文件夹
75+ :param triggered:
76+ """
4677
4778 def rootItem (self ):
4879 """得到根节点Item"""
0 commit comments