gpt4 book ai didi

c++ - 如何线程化 QSortFilterProxyModel 的排序?

转载 作者:太空狗 更新时间:2023-10-29 21:08:07 25 4
gpt4 key购买 nike

我的应用程序的主视图包含一个单级(无子级)QTreeView,平均显示 30,000 个项目。由于项目的创建方式,它们未排序地插入到模型中。这意味着在应用程序启动时,我必须按字母顺序对 View 中的项目进行排序,这需要将近 1 秒的时间,在完成之前留下无响应的灰色屏幕。 (因为窗口还没有画)

有什么方法可以将 QSortFilerProxyModel 排序到单独的线程中,或者是否有任何其他替代方法来解决这个问题?

下面是我的lessThan()代码,供引用:(左右是传给函数的两个QModelIndexes)

    QString leftString = left.data(PackageModel::NameRole).toString();
QString rightString = right.data(PackageModel::NameRole).toString();

return leftString < rightString;

提前致谢。

最佳答案

不要对 View 中的项目进行排序。将它们添加到临时列表并使用 QtConcurrent::run 对该列表进行排序.完成后(使用 QFutureWatcher 知道什么时候),设置您的模型。在执行排序时,您可以显示“请稍候”消息或跳动消息。

关于c++ - 如何线程化 QSortFilterProxyModel 的排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3833535/

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