【问题标题】:How to set QListView rows height permanently如何永久设置 QListView 行高
【发布时间】:2015-03-29 10:16:18
【问题描述】:

不幸的是,QTableView.resizeRowsToContents() 仅设置当前填充TableView 的那些行(或项目)的高度。使用第一个model's reset() 或更新QTableView's 行的高度切换回某个默认值(似乎大约是 32 px 高)。 大多数情况下,此默认行高不必要地高,留下大量宝贵的屏幕空间未填充。 如何将更改永久应用于行高?

【问题讨论】:

    标签: python qt model pyqt qtableview


    【解决方案1】:

    我发现了两种永久设置行高的方法,您要么必须在模型中使用 SizeHintRole,要么在 QStyledItemDelegate 中实现 sizeHint 方法。代码如下所示:

    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    import sys
    
    
    class ListModel(QAbstractListModel):
        def __init__(self, data=[], parent=None):
            QAbstractListModel.__init__(self, parent)
            self.data = data
    
        def rowCount(self, parent=None):
            return len(self.data)
    
        def data(self, index, role=None):
            if role == Qt.DisplayRole:
                row = index.row()
                value = self.data[row]
                return value
    
    # ==============Comment if you're using delegate===============
            if role == Qt.SizeHintRole:
                return QSize(100, 75)
    # =============================================================
    
    
    class ListDelegate(QStyledItemDelegate):
    
        def __init__(self, parent=None):
            QStyledItemDelegate.__init__(self, parent)
    
        def sizeHint(self, option, index):
            return QSize(100, 20)
    
    
    app = QApplication(sys.argv)
    listview = QListView()
    model = ListModel([12, 15, 19])
    listview.setModel(model)
    
    # =============uncomment to use delegate=====================
    # delegate = ListDelegate()
    # listview.setItemDelegate(delegate)
    # ============================================================
    
    listview.show()
    sys.exit(app.exec_())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      相关资源
      最近更新 更多