
Сортировка по дате и времени QSortFilterProxyModel QSqlRelationalTableModel
Добрый вечер.
Хочу сортировать в QTableView по заголовку колонки по дате и времени, сейчас сортирует как строку.
Данные беру из БД SQLite, тип записи DATETIME.
void Equipment::initTableGoods() { dataBase->connOpen(); modelGoods = new QSqlRelationalTableModel(this); modelGoods->setTable("goods"); modelGoods->setFilter("goods.active = '1'"); modelGoods->setRelation(1, QSqlRelation("ref_type", "id", "name")); modelGoods->setRelation(2, QSqlRelation("ref_goods", "id", "name")); modelGoods->setRelation(3, QSqlRelation("ref_mol", "id", "name")); modelGoods->setRelation( 8, QSqlRelation("ref_condition", "id_ref_condition", "name_ref_condition")); modelGoods->setRelation(12, QSqlRelation("ref_location", "id_ref_location", "name_ref_location")); modelGoods->setHeaderData(1, Qt::Horizontal, tr("Тип")); modelGoods->setHeaderData(2, Qt::Horizontal, tr("Наименование")); modelGoods->setHeaderData(3, Qt::Horizontal, tr("МОЛ")); modelGoods->setHeaderData(4, Qt::Horizontal, tr("MAC")); modelGoods->setHeaderData(5, Qt::Horizontal, tr("IP")); modelGoods->setHeaderData(6, Qt::Horizontal, tr("S/N")); modelGoods->setHeaderData(7, Qt::Horizontal, tr("Инвентарный номер")); modelGoods->setHeaderData(8, Qt::Horizontal, tr("Статус")); modelGoods->setHeaderData(9, Qt::Horizontal, tr("Имя устройства в сети")); modelGoods->setHeaderData(10, Qt::Horizontal, tr("Статус")); modelGoods->setHeaderData(11, Qt::Horizontal, tr("Расположение")); modelGoods->setHeaderData(12, Qt::Horizontal, tr("Расположение")); modelGoods->setHeaderData(13, Qt::Horizontal, tr("Доступность")); modelGoods->setHeaderData(15, Qt::Horizontal, tr("Комментарий")); modelGoods->setHeaderData(16, Qt::Horizontal, tr("Последние обновления")); modelGoods->select(); sort->setSourceModel(modelGoods); ui->tableView->setModel(sort); // Устанавливаем модель на TableView ui->tableView->setColumnHidden(0, true); // Скрываем колонку ui->tableView->setColumnHidden(10, true); // Скрываем колонку ui->tableView->setColumnHidden(11, true); // Скрываем колонку ui->tableView->setColumnHidden(14, true); // Скрываем колонку // Разрешаем выделение строк ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); // Устанавливаем режим выделения лишь одной строки в таблице ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection); // Устанавливаем размер колонок по содержимому ui->tableView->resizeColumnsToContents(); ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); // Запрещаем редактирование ui->tableView->horizontalHeader()->setStretchLastSection( true); // Растягиваем последнюю колонку по всему tableView dataBase->connClose(); }

We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.
Fornex
Let me recommend you a great European Fornex hosting.
Fornex has proven itself to be a stable host over the years.
For Django projects I recommend VPS hosting
Following the link you will receive a 5% discount on shared hosting services, dedicated servers, VPS and VPN
View HostingShare on social networks
Donate
The EVILEG project has switched to a non-commercial basis and will develop solely on the enthusiasm of the site creator, the enthusiasm of users, donations and the hosting referral system
Thank you for your support
Available ways to support the project
PayPal
PatreonYandex.MoneyMore
Добрый день.
Наследуйте модель сортировки от QSortFilterProxyModel и переопределите метод QSortFilterProxyModel::lessThan таким образом, чтобы вы забирали через индексы дату и время из модели, создавали бы объекты QDateTime и сравнивали бы их друг с другом, тогда это будет работать. Но конкретно для этой колонки, для всех остальных вызывайте методы базового класса.