gpt4 book ai didi

qt - QListView 根据模型的排序顺序显示不同大小的项目

转载 作者:行者123 更新时间:2023-12-04 13:34:26 28 4
gpt4 key购买 nike

我试图按名称、创建日期和上次访问日期(所有升序和降序)对 QFileSystemModel 进行排序。我使用 QSortFilterProxyModel 进行排序。更改排序顺序时不知何故有一个奇怪的效果:在名称被省略之前显示的字符数变化很大。根据排序顺序,一些项目只有三个字母(Pro...),而另一些项目则多达十个(Programms)。我已经将 View 网格大小设置得足够大(100x100),更改图标大小不会影响 View 。

如果我直接对 QFileSystemModel 进行排序,一切正常,但我不能按文件名以外的其他方面进行排序。

我在哪里可以更改 QSortFilterProxyModel 省略文本的行为?为什么我的代理完全影响 View ?我在哪里可以找到有关 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);
}

提前致谢!

最佳答案

问题出在ItemDelegate将图标绘制到 QListView .我对它进行了子类化,自己处理了省略和绘画,现在一切正常。我将对此进行进一步调查,并尽快(如果可以)发布详细描述。

关于qt - QListView 根据模型的排序顺序显示不同大小的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4378539/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com