Вопрос

Я написал потомок QtreeView с несколькими колоннами. Я хочу создать всплывающее меню, которое появляется out nthe user Щелчок правой кнопкой мыши над заголовками столбцов. Я пробовал ловить сигналы от QtreeView для этого, но Qtreeview не выделяет сигналы на заголовках. Qtreeview.header () делает. Поэтому я считаю, что я должен либо:
1: Подключите один из сигналов QHELDERVIVE в всплывающую функцию - я не смог найти сигнал, который срабатывает в одном праверементе - я попробовал раздел, раздел, раздел HandhandoudoubleClicked, раздел DoubleClicked, разборки (не удивляет двойных кликов не поймал один щелчок правой кнопкой мыши - но они поймают двойной щелчок правой кнопкой мыши)

self.header().sectionClicked.connect(self.headerMenu)
self.header().sectionHandleDoubleClicked.connect(self.headerMenu)
self.header().sectionDoubleClicked.connect(self.headerMenu)
self.header().sectionPressed.connect(self.headerMenu)

или,
2: Напишите потомка QHeaderView с собственной функцией мышью мышью и используйте это для моих заголовков. Я до сих пор не удался подключить новый класс заголовка к потомке QtreeView. Я продолжаю получать ошибку сегментации во время выполнения, не более объяснение.

#in DiceView's init, where DiceHeaders is the QHeaderView descendant
self.setHeader(DiceHeaders())

Есть идеи?

Это было полезно?

Решение

Я обнаружил функцию SetContextMenupolicy:

self.header().setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.header().customContextMenuRequested.connect(self.headerMenu)

Тогда, в гардермну:

def headerMenu(self, pos):
    globalPos = self.mapToGlobal(pos)
    menu = QMenu()
    menu.addAction("test item")
    selectedItem = menu.exec_(globalPos)
    if selectedItem:
        print "selected: ", selectedItem

Другие советы

Я бы пошел на решение N ° 2: Написать свой собственный класс наследовать QHedview. Ваша ошибка сегментации может исходить из глюки Python / Pyqt? Вы должны убедиться, что объект DiceHeaders существует, сохраняя ссылку на него.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top