Получение столбца заголовка при щелчке правой кнопкой мыши для QTableWidget

У меня есть 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(), но они, похоже, относятся только к фактическому выбор таблицы, а не заголовки.

Как только мне удастся получить правильный -щелкнутый индекс заголовка, я могу легко ограничить меню, чтобы отображать только те столбцы, когда выбраны правильные индексы (только с флажками ), так что это дополнительная вещь, на самом деле.

Что мне не хватает? Заранее благодарю за любую помощь.

5
задан WilcoRogers 9 August 2012 в 17:17
поделиться