Сортировка по дате и времени 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();
- }
2
253
Do you like it? Share on social networks!
- Last comments
- AKApril 1, 2025, 11:41 a.m.Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VPMarch 9, 2025, 4:14 p.m.Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- ИМNov. 22, 2024, 9:51 p.m.Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
- Now discuss on the forum
- МАApril 1, 2025, 4:21 p.m.0ff763fe-4e50-455d-a3a6-5699c243b1a5_17_44_22_1.xml
- fFeb. 15, 2025, 1:46 p.m.Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
Добрый день.
Наследуйте модель сортировки от QSortFilterProxyModel и переопределите метод QSortFilterProxyModel::lessThan таким образом, чтобы вы забирали через индексы дату и время из модели, создавали бы объекты QDateTime и сравнивали бы их друг с другом, тогда это будет работать. Но конкретно для этой колонки, для всех остальных вызывайте методы базового класса.