我如何使用 QSortFilterProxyModel 按字母顺序对列表项进行排序?
How i can sort a list item by alphabetical order with QSortFilterProxyModel?
您好,我已将 QSortFilterProxyModel 属性 设置为这种模式
int main(int argc, char *argv[])
{
....
ProgramFilterProxyModel programFPModel{};
programFPModel.setSourceModel(&pm);
engine.rootContext()->setContextProperty("programFPModel", &programFPModel);
....
}
ProgramFilterProxyModel::ProgramFilterProxyModel(QObject *parent) :
QSortFilterProxyModel(parent), m_stringaRicerca(""),
m_programListCurrIndex(0)
{
setSortRole(ProgramModel::NameQml);
setDynamicSortFilter(true);
sort(0);
setSortLocaleAware(true);
}
.....
当我在 Ubuntu 上执行我的应用程序时,该项目按字母顺序正确排序,因为我已将 isSortLocaleAware 属性 设置为 true ,而不是如果我尝试使用 buildroot 在嵌入式系统上执行我的应用程序OS(IMX6 微控制器)项目未按字母顺序排序。
如果我尝试打印:
qDebug()<< QLocale::system().language()
我的 buildroot 的语言环境 OS 输出是 "C",而不是 ubuntu 是意大利语,也许这是问题所在?
如何在不使用 setSortLocaleAware(true) 的情况下按名称对项目进行排序并按字母顺序排序?
我想要的顺序列表与文件列表的排序顺序相同,例如 ubuntu。
示例:
- a.txt
- A.txt
- à.txt
- b.txt
- B.txt
您可以设置默认语言环境(尽快在您的 main() 中设置)
QLocale::setDefault(QLocale(QLocale::Italian));
上面这行只是一个例子。您应该根据用户偏好等设置可变区域设置。
或者您可以覆盖 the protected method bool QSortFilterProxyModel::lessThan()
并根据需要比较项目。
见 Custom Sort/Filter Model Example.
您好,我已将 QSortFilterProxyModel 属性 设置为这种模式
int main(int argc, char *argv[])
{
....
ProgramFilterProxyModel programFPModel{};
programFPModel.setSourceModel(&pm);
engine.rootContext()->setContextProperty("programFPModel", &programFPModel);
....
}
ProgramFilterProxyModel::ProgramFilterProxyModel(QObject *parent) :
QSortFilterProxyModel(parent), m_stringaRicerca(""),
m_programListCurrIndex(0)
{
setSortRole(ProgramModel::NameQml);
setDynamicSortFilter(true);
sort(0);
setSortLocaleAware(true);
}
.....
当我在 Ubuntu 上执行我的应用程序时,该项目按字母顺序正确排序,因为我已将 isSortLocaleAware 属性 设置为 true ,而不是如果我尝试使用 buildroot 在嵌入式系统上执行我的应用程序OS(IMX6 微控制器)项目未按字母顺序排序。
如果我尝试打印:
qDebug()<< QLocale::system().language()
我的 buildroot 的语言环境 OS 输出是 "C",而不是 ubuntu 是意大利语,也许这是问题所在?
如何在不使用 setSortLocaleAware(true) 的情况下按名称对项目进行排序并按字母顺序排序?
我想要的顺序列表与文件列表的排序顺序相同,例如 ubuntu。
示例:
- a.txt
- A.txt
- à.txt
- b.txt
- B.txt
您可以设置默认语言环境(尽快在您的 main() 中设置)
QLocale::setDefault(QLocale(QLocale::Italian));
上面这行只是一个例子。您应该根据用户偏好等设置可变区域设置。
或者您可以覆盖 the protected method bool QSortFilterProxyModel::lessThan()
并根据需要比较项目。
见 Custom Sort/Filter Model Example.