setGridSize(...) 和文本省略
setGridSize(...) and text eliding
我正在使用 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 不会改变项目的大小,而是改变它们之间的分隔,如标尺所示。
要更改项目的宽度,我已经实现了委托:
# ...
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)
# ...
我正在使用 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 不会改变项目的大小,而是改变它们之间的分隔,如标尺所示。
要更改项目的宽度,我已经实现了委托:
# ...
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)
# ...