PyQt表头上下文菜单

时间:2012-08-10 20:58:00

标签: header pyqt contextmenu qtableview

我正在开发一个QTableView,它在PyQt4中显示来自QAbstractTableModel的自定义模型子类。我需要能够允许用户设置他们想要作为特定类型数据的列。为了实现这一点,我想在单击列标题时实现上下文菜单,允许选项将其设置为这些类型。我不知道如何创建这样的上下文菜单,可以区分不同的列。有人能指出我正确的方向吗?

由于

1 个答案:

答案 0 :(得分:3)

您可以从标题视图中访问信息。你可以这样做:

def __init__( self, parent ):
    # initialize class
    ...

    # setup menu options
    header = self.ui.tree.header()
    header.setContextMenuPolicy(Qt.CustomContextMenu)
    header.customContextMenuRequested.connect( self.showHeaderMenu )

def showHeaderMenu( self, point ):
    column = self.ui.tree.header().logicalIndexAt(point.x())

    # show menu about the column
    menu = QMenu(self)
    menu.addAction('Hide Column')

    menu.popup(header.mapToGlobal(pos))