У меня есть QTableWidget с рядом столбцов, которые являются только флажками (, а некоторые — нет ). Я пытаюсь реализовать функцию, чтобы, когда пользователь щелкает правой кнопкой мыши элемент заголовка, относящийся к столбцу «только флажок», ему предоставляется возможность «снять отметку со всех» или «отметить все».
До сих пор мне удалось реализовать customContextMenu
с помощью следующих сигналов:
self.headers = self.tblData.horizontalHeader()
self.headers.setContextMenuPolicy(Qt.CustomContextMenu)
self.headers.customContextMenuRequested.connect(self.show_header_context_menu)
self.headers.setSelectionMode(QAbstractItemView.SingleSelection)
Что приводит к следующему вызову контекстного меню:
def show_header_context_menu(self, position):
menu = QMenu()
deselect = menu.addAction("Clear Checked")
ac = menu.exec_(self.tblData.mapToGlobal(position))
if ac == deselect:
pass
#Actually do stuff here, of course
Это вызывает контекстное меню, однако я не могу найти способ получить индекс заголовка, который был щелкнут правой кнопкой мыши -, я пробовал self.headers.selectedIndexes()
, а также self.headers.currentIndex()
, но они, похоже, относятся только к фактическому выбор таблицы, а не заголовки.
Как только мне удастся получить правильный -щелкнутый индекс заголовка, я могу легко ограничить меню, чтобы отображать только те столбцы, когда выбраны правильные индексы (только с флажками ), так что это дополнительная вещь, на самом деле.
Что мне не хватает? Заранее благодарю за любую помощь.