首页 > 数据库 >Qt中QSqlQueryModel对应的表格进行自动排序功能

Qt中QSqlQueryModel对应的表格进行自动排序功能

时间:2023-02-04 18:55:21浏览次数:59  
标签:排序功能 tableView QSqlQueryModel ui 排序 Qt

Qt中使用了自己的机制来避免使用SQL语句,为我们提供了更简单的数据库操作及数据显示模型,分别是只读的QSqlQueryModel,操作单表的QSqlTableModel和以及可以支持外键的QSqlRelationalTableMode

如果要使用排序功能,需要建立信号槽

//表头设置排序箭头,
ui->tableView->horizontalHeader()->setSortIndicatorShown(true);
//建立信号槽
connect(ui->tableView->horizontalHeader(),&QHeaderView::sectionClicked, this, &StudentManagerDialog::on_tableView_sort);
    createDatabase();

 

槽函数

void StudentManagerDialog::on_tableView_sort(const int column)
{
    ui->tableView->sortByColumn(column);
}

  

在QSqlQueryModel模型中,是不具备排序能力的,必须重写其虚函数sort来实现排序,但是可以通过代理的方式来实现排序,具体实现方法核心代码如下:

QString str = "SELECT * FROM student";
    model.setQuery(str);
    QSortFilterProxyModel* filterModel = new QSortFilterProxyModel(this);
    filterModel->setSourceModel(&model);
    ui->tableView->setModel(filterModel);

  这样便能够实现点击tableView实现排序,若需要自定义的排序,也非常简单,继承QSortFilterProxyModel类,并重写lessThan函数即可!

标签:排序功能,tableView,QSqlQueryModel,ui,排序,Qt
From: https://www.cnblogs.com/unicornsir/p/17092140.html

相关文章

  • Qt6+OpenCV4人脸识别应用程序面部标志图(共计68点)
    我们可以看到,由索引号所代表的点在面部具有固定的位置,因此我们可以通过点的以下索引(包含下限,不含上限)来访问这些面部特征:mouth(嘴巴)[48,68]。righteyebrow(右眉)[17,22]。......
  • PyQt加载UI文件
    1.动态加载importsysfromPySide6importQtCore,QtWidgetsfromPySide6.QtWidgetsimport*fromPySide6.QtUiToolsimportQUiLoaderclassreadfile(QWidget):......
  • Qt-Qt之剪切板、热键应用(QClipboard、RegisterHotKey)
     .pro1QT+=coregui23greaterThan(QT_MAJOR_VERSION,4):QT+=widgets45CONFIG+=c++1167#Thefollowingdefinemakesyourcompi......
  • QT中级(1)QTableView自定义委托(一)实现QSpinBox、QDoubleSpinBox委托
    1写在前面的话我们在之前写的《QT(7)-初识委托》文章末尾提到,“使用一个类继承QStyledItemDelegate实现常用的控件委托,在使用时可以直接调用接口,灵活实现各种委托”。我......
  • Qt 中多线程的使用
    前言在进行桌面应用程序开发的时候,假设应用程序在某些情况下需要处理比较复杂的逻辑,如果只有一个线程去处理,就会导致窗口卡顿,无法处理用户的相关操作。这种情况下就需要使......
  • PyQT调用ui界面文件
    通过QtDesigner将ui文件转存为py文件不继承Ui_FormimportsysfromPySide6importQtCore,QtWidgetsfromPySide6.QtWidgetsimport*fromui_testimportUi_Form......
  • qt modelView架构优势,对比qtableview与qtablewidget
    首先我们看测试数据: 两者的差异很明显,数据量大时,QTableView优于QTableWidget;虽然数据量小的时候差异不大,使用分页的话两者差距很小,但还是推荐QTableView。QTableVie......
  • Qt实现 剪映 桌面端的界面效果
    下方是个人实现的桌面端剪映效果,个人觉得自己实现的比较好看,原本的字体太小了再上一张桌面端剪映原版界面原本的界面实现看起来确实字体偏小不好看,因为发现原本也是Qt实现......
  • Matlab编译生成DLL,供QT调用
    QT5.15.2MatlabR2022a一、使用matlab生成dll准备好matlab接口命令行窗口敲入以下命令:  弹出以下对话框 选择LibraryCompiler弹出以下对话框  选择C......
  • 强制去掉Qt的运行环境信息
    基于Qt6开发的应用程序会依赖libQt6Core.so.6,动态库so文件中包含有运行环境信息,包含有运行所需的linuxkernel最低版本,可通过objdump工具查看。在Docker环境中,glibc的版本......