행 높이를 영구히 설정하는 두 가지 방법을 찾았 으면 모델에서 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_())