正在尝试使用pyQt5将数据填充到我的Qtablewdiget中。最重要的是,我想在表的特定列上添加一个上下文菜单。我已经实现了Qmenu以便在整个表中弹出菜单,但是可以帮助我如何为特定列实现上下文菜单操作。
查看我尝试过的进一步工作的快照
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QPushButton, QAction, QApplication, QLabel, QMainWindow, QMenu)
from PyQt5 import QtCore, QtGui, QtWidgets
# setting context menu policy on my table, "self.ui.tableWidgetGraph"
self.ui.tableWidgetGraph.setContextMenuPolicy(Qt.CustomContextMenu)
# setting context menu request by calling a function,"self.on_context_menu"
self.ui.tableWidgetGraph.customContextMenuRequested.connect(self.on_context_menu)
# define table size
self.ui.tableWidgetGraph.setRowCount(length);
self.ui.tableWidgetGraph.setColumnCount(lenColumn);
def on_context_menu(self, point):
# show context menu
self.contextMenu = QMenu(self)
Task_one_action = self.contextMenu.addAction("Task_one")
self.contextMenu.addSeparator()
Task_two_action = self.contextMenu.addAction("Task_two")
self.contextMenu.addSeparator()
quit_action = self.contextMenu.addAction("Quit")
# I want to perform actions only for a single column(E.g: Context menu only for column 4 of my table
# Need help here....???
action = self.contextMenu.exec_(self.ui.tableWidgetGraph.mapToGlobal(point))
self.selected_key = ""
for self.item in self.ui.tableWidgetGraph.selectedItems():
self.selected_key = self.item.text()
if action == quit_action:
print("Executing the [Quit/Exit] Action")
qApp.quit()
elif action == Task_one_action:
print("Executing Search: [Task_one_action ]")
elif action == Task_two_action:
print("Executing Search: [Task_two_action ]")
[有人可以指导我如何仅对单个列执行上下文操作(例如:仅对表的第4列中的选定项目执行上下文菜单),。谢谢
您可以使用itemAt将项目放在某个位置,然后使用column()
,但是由于它可能是空项目,因此无论该列是否存在,它都将返回None。