QListView отображает элементы разных размеров в зависимости от порядка сортировки модели - PullRequest
3 голосов
/ 07 декабря 2010

Я пытаюсь отсортировать QFileSystemModel по имени, дате создания и дате последнего доступа (все по возрастанию и по убыванию).Я использую QSortFilterProxyModel для сортировки.Каким-то образом при изменении порядка сортировки возникает странный эффект: количество символов, отображаемых до тех пор, пока имя не будет выделено, сильно варьируется.В зависимости от порядка сортировки, некоторые элементы имеют только три буквы (Pro ...), а другие - до десяти (Программы).Я уже установил достаточно большой размер сетки просмотров (100x100), изменение размера значка не влияет на вид.

Если я сортирую QFileSystemModel напрямую, все работает нормально, но тогда я не могу отсортировать по другим аспектам, кроме имени файла.

Где я могу изменить поведение QSortFilterProxyModel, исключающего текст?Почему мой прокси влияет на вид вообще?Где я могу найти дополнительную информацию о QFileSystemModel?Я до сих пор не знаю, какие данные хранятся в других столбцах (№ 1 - это имя файла).

Снимок экрана:

alt text

Как выможет видеть, в зависимости от сортировщика, имена файлов удаляются или нет.Если я сортирую по убыванию, его "twai ...", если я сортирую по возрастанию, его "twain.dll".

Вот код, который выполняется, когда я нажимаю на стрелку сортировки:

// initialization
fileNameSortModel = new QSortFilterProxyModel(parent);
fileNameSortModel.sourceModel(originalModel); // originalModel is type of QFileSystemModel

// ...

void PFileListWithHeader::onNameSort(Qt::SortOrder order)
{
    currentModel = fileNameSortModel;
    view->setModel(currentModel);
    view->setRootIndex(translateOriginalIndexToProxy(originalModel->index(path)));
    currentModel->sort(0, order);
}

Заранее спасибо!

1 Ответ

1 голос
/ 14 декабря 2010

Проблема лежит где-то в ItemDelegate, который рисует значки на QListView. Я вложил его в подклассы, сам занимался элитами и рисовал, и теперь все работает как надо. Я исследую этот документ и выложу подробное описание, как только (и если) смогу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...