【问题标题】:Different tooltips at each header in QTableViewQTableView 中每个标题的不同工具提示
【发布时间】:2012-06-17 04:32:30
【问题描述】:

我可以使用向所有标题添加单个工具提示

tableview = QTableView()
tableview.horizontalHeader().setToolTip("headers")

但是我可以为每个标题添加不同的工具提示吗,即我需要访问包含标题的 QWidgets,例如(不工作):

tableview.horizontalHeader().Item[0].setToolTip("header 0")

【问题讨论】:

    标签: python pyqt tooltip qtableview qheaderview


    【解决方案1】:

    我对这些东西也很陌生,但我认为您需要继承 QTableView 并重新实现 headerData 函数。这是一个工作示例。希望你能从中提取出你需要的东西:

    from PyQt4 import QtGui, QtCore
    import sys
    
    class PaletteListModel(QtCore.QAbstractListModel):
    
        def __init__(self, colors = [], parent = None):
            QtCore.QAbstractListModel.__init__(self,parent)
            self.__colors = colors
    
        # required method for Model class
        def rowCount(self, parent):
            return len(self.__colors)
    
        # optional method for Model class
        def headerData(self, section, orientation, role):
            if role == QtCore.Qt.DisplayRole:
                if orientation == QtCore.Qt.Horizontal:
                    return QtCore.QString("Palette")
                else:
                    return QtCore.QString("Color %1").arg(section)
    
            if role == QtCore.Qt.ToolTipRole:
                if orientation == QtCore.Qt.Horizontal:
                    return QtCore.QString("Horizontal Header %s Tooltip" % str(section))
                else:
                    return QtCore.QString("Vertical Header %s Tooltip" % str(section))
    
    
        # required method for Model class
        def data(self, index, role):
            # index contains a QIndexClass object. The object has the following
            # methods: row(), column(), parent()
    
            row = index.row()
            value = self.__colors[row]
    
            # keep the existing value in the edit box
            if role == QtCore.Qt.EditRole:
                return self.__colors[row].name()
    
            # add a tooltip
            if role == QtCore.Qt.ToolTipRole:
                return "Hex code: " + value.name()
    
            if role == QtCore.Qt.DecorationRole:
                pixmap = QtGui.QPixmap(26,26)
                pixmap.fill(value)
    
                icon = QtGui.QIcon(pixmap)
    
                return icon
    
            if role == QtCore.Qt.DisplayRole:
    
                return value.name()
    
        def setData(self, index, value, role = QtCore.Qt.EditRole):
            row = index.row()
    
            if role == QtCore.Qt.EditRole:
                color = QtGui.QColor(value)
    
                if color.isValid():
                    self.__colors[row] = color
                    self.dataChanged.emit(index, index)
                    return True
    
            return False
    
        # implment flags() method
        def flags(self, index):
            return QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable
    
    if __name__ == '__main__':
    
        app = QtGui.QApplication(sys.argv)
        app.setStyle("plastique")
    
        data = QtCore.QStringList()
        data << "one" << "two" << "three" << "four" << "five"
    
        tableView = QtGui.QTableView()
        tableView.show()
    
        red   = QtGui.QColor(255,0,0)
        green = QtGui.QColor(0,255,0)
        blue  = QtGui.QColor(0,0,255)
    
        model = PaletteListModel([red, green, blue])
    
        tableView.setModel(model)
    
        sys.exit(app.exec_())
    

    【讨论】:

      【解决方案2】:

      QTableWidget(继承QTableView)有一个方法horizontalHeaderItem(int),可以用来获取标题项,所以你也许可以用它来代替QTableView

      【讨论】:

      • 据我所知,您不能将 QTableWidget 与 QAbstractTablemodel 一起使用。是否有解决方法或其他解决方案
      【解决方案3】:

      如果你使用QTableView,可以通过QStandardItemModel设置tooltip:

      QStandardItemModel myModel;
      myModel.horizontalHeaderItem(1)->setToolTip("");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-13
        • 1970-01-01
        • 1970-01-01
        • 2011-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多