Python setGridSize(…)和文本删除

Python setGridSize(…)和文本删除,python,python-3.x,pyqt,pyqt5,qlistview,Python,Python 3.x,Pyqt,Pyqt5,Qlistview,我正在使用QListView和QFileSystemModel制作一个文件管理器。我正在使用QListView::ListMode。我面临的问题是,尽管设置了网格大小,但文本不会被忽略。这是我正在使用的代码 import sys, os from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * app = QApplication( sys.argv ) fsm = QFileSys

我正在使用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_()
我得到的是垃圾:

我不知道为什么会这样?如果我没有设置网格大小,那么图标和文本将正确呈现。这是Qt错误吗

我使用的是Debian Sid,Qt5 5.11.3+dfsg1-1,Python3/PyQt5:3.7.3-1/5.11.3+dfsg-1+b3
我甚至用Qt5/C++尝试过这一点,但问题仍然存在。

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

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

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

#。。。
类StyledItemDelegate(QStyledItemDelegate):
def sizeHint(自身、选项、索引):
s=super().sizeHint(选项,索引)
s、 设置宽度(200)
返回s
# ...
lv=QListView()
委托=StyledItemDelegate(lv)
lv.setItemDelegate(委托)
# ...

在PyQt5 5.12.1中,我发现它工作正常:。可能是您所指版本中的Qt错误out@eyllanesc我懂了。你知道为什么文本会在200像素之前被剪掉吗?例如,我100%确定图标大小为48像素,“桌面”的显示名称不会超过200像素。事实上,对于点大小为15的固定宽度字体,“桌面”的典型宽度为75到80像素。那么为什么要剪切呢?在下图中,我放置了一个规则,观察到项目的宽度是100px,但图标之间的空间是200px,所以我认为gridsize指的是它。另一方面,您实现的代码是什么?最后,对于要占用200px宽度的项,我创建了一个委托,用于确定该大小:“另一方面,您实现的代码是什么?”对不起,您在说什么代码?文件管理器代码?你能分享一下代表的代码吗?我说的是你在问题中提供的代码,因为正如我指出的,我不会重复你的错误。委托的代码很简单:
类委托(QStyledItemDelegate):def sizeHint(self,*args):s=super().sizeHint(*args)s.setWidth(200)返回s