Skip to content

Commit 8ada560

Browse files
committed
add menu test
1 parent 89a31f4 commit 8ada560

File tree

3 files changed

+37
-2
lines changed

3 files changed

+37
-2
lines changed

UiFiles/MainWindow.ui

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,9 @@
256256
</item>
257257
<item>
258258
<widget class="TreeView" name="treeViewCatalogs">
259+
<property name="contextMenuPolicy">
260+
<enum>Qt::CustomContextMenu</enum>
261+
</property>
259262
<property name="frameShape">
260263
<enum>QFrame::NoFrame</enum>
261264
</property>

UiFiles/Ui_MainWindow.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ def setupUi(self, FormMainWindow):
100100
self.horizontalLayout_3.addWidget(self.buttonClear)
101101
self.verticalLayout_4.addWidget(self.widgetSearch)
102102
self.treeViewCatalogs = TreeView(self.widgetCatalogs)
103+
self.treeViewCatalogs.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
103104
self.treeViewCatalogs.setFrameShape(QtWidgets.QFrame.NoFrame)
104105
self.treeViewCatalogs.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
105106
self.treeViewCatalogs.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)

Widgets/TreeView.py

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
import os
1313

1414
from 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

1818
from Utils import Constants
1919
from 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

Comments
 (0)