我想按日期排序表。問題是它們被解釋爲字符串,因此我的本地日期格式被錯誤排序,如26. September
大於16. November
,因爲26 > 16
。QSortFilterProxyModel按日期排序
無論如何,所以我有我自己的模型建立,並試圖像這樣:
QVariant MyModel::data(const QModelIndex &index, int role) const
{
if(role == Qt::UserRole)
{
if(index.column() == 5) // Date
return QSqlTableModel::data(index, role).toDate();
}
if(role == Qt::DisplayRole)
{
if(index.column() == 5) // Date
return QSqlTableModel::data(index.role).toDate().toString("dd MMMM yyyy");
}
}
,我設置sortRole
這樣的:
proxyModel->setSortRole(Qt::UserRole);
相應的線路實際上被調用,但現在我根本無法整理桌子。它只是沒有迴應。相應列處的箭頭(表示asc或desc排序)正在改變,但數據不是。 當然我設置的休息,如:
proxyModel->setDynamicSortFilter(true);
proxyModel->setSourceModel(myDBModel);
proxyModel->setFilterKeyColumn(1);
proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
如果我不設置sortRole
至少我可以通過正確的另一列進行排序。 我在這裏做錯了什麼?我是否需要實現其他功能或其他功能?我看了看周圍的互聯網,但所有我發現是排序整數從幾年前,從來沒有日期:(