setGridSize (...) и выделение текста - PullRequest
1 голос
/ 26 апреля 2019

Я использую 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 ++, и проблема обнаруживается даже там.

1 Ответ

1 голос
/ 26 апреля 2019

Я не получаю то, что показывает ОП на изображении, но я получаю следующее:

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

...