setGridSize(...)和文本删除

问题描述 投票:1回答:1

我正在使用QListView和QFileSystemModel来创建文件管理器。我正在使用QListView::ListMode。我面临的问题是尽管设置了网格大小,但文本并没有被忽略。这是我正在使用的代码。

import sys, os

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

app = QApplication( sys.argv )

fsm = QFileSystemModel()
lv = QListView()
lv.setViewMode( QListView.ListMode )

lv.setResizeMode( QListView.Adjust );
lv.setMovement( QListView.Static );
lv.setSelectionMode( QListView.ExtendedSelection );
lv.setWrapping( True );
lv.setFlow( QListView.LeftToRight );
lv.setTextElideMode( Qt.ElideRight );
lv.setUniformItemSizes( True );

lv.setIconSize( QSize( 48, 48 ) )
lv.setGridSize( QSize( 200, 56 ) )

lv.setModel( fsm )
lv.setRootIndex( fsm.setRootPath( "/path/to/my/folder/" ) )

lv.show()

app.exec_()

我得到的是这个垃圾:

enter image description here

我不知道为什么会这样?在我没有设置网格大小的情况下,图标和文本正确呈现。这是一些Qt错误吗?

我正在使用Debian Sid,Qt5 5.11.3 + dfsg1-1,Python3 / PyQt5:3.7.3-1 / 5.11.3 + dfsg-1 + b3我甚至用Qt5 / C ++尝试过这个问题,问题就出现了那里。

python python-3.x pyqt pyqt5 qlistview
1个回答
1
投票

我没有得到OP在图像中显示的内容,但我得到以下内容:

enter image description here

它表明gridSize不会改变项目的大小,而是改变它们之间的距离,如标尺所示。

要更改项目的宽度,我已实现了委托:

# ...
class StyledItemDelegate(QStyledItemDelegate):
    def sizeHint(self, option, index):
        s = super().sizeHint(option, index)
        s.setWidth(200)
        return s

# ...
lv = QListView()
delegate = StyledItemDelegate(lv)
lv.setItemDelegate(delegate)
# ...

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.