网站建设制作汕头网站换新的空间域名解析怎么做
- 作者: 五速梦信息网
- 时间: 2026年03月21日 07:39
当前位置: 首页 > news >正文
网站建设制作汕头,网站换新的空间域名解析怎么做,百度链接提交,福建省城乡建设网站一、效果示例图
1.1 自定义表格排序示例图
本文过滤条件为行索引取余2等于0时返回true#xff0c;且从下图中可以看到#xff0c;奇偶行是各自挨在一起的。
1.2 自定义表格过滤示例图
下图添加两列条件#xff08;当前数据大于当前列条件才返回true#xff0c;且多个列…一、效果示例图
1.1 自定义表格排序示例图
本文过滤条件为行索引取余2等于0时返回true且从下图中可以看到奇偶行是各自挨在一起的。
1.2 自定义表格过滤示例图
下图添加两列条件当前数据大于当前列条件才返回true且多个列条件为且关系下方添加条件分别为”0列条件值50“”2列条件值40“综合下来为0列值大于50且2列值大于40则返回true
二、相关理解
被动触发不论是排序还是过滤都会在添加数据的时候触发自定义排序/过滤函数 主动触发排序可通过数据模型或过滤模型的sort函数触发过滤可通过setFilterRegExp函数触发。此处说的两个函数主动调用后会运行自定义排序/过滤条件前提是对应的函数有重写
过滤此外除开本文写的filterAcceptsRow函数还有filterAcceptsColumn函数其触发条件与filterAcceptsRow一致
三、源码
CMainWindow.h
#ifndef CMAINWINDOW_H
#define CMAINWINDOW_H#include CSortFilterProxyModel.h#include QMainWindow
#include QStandardItemModelnamespace Ui {
class CMainWindow;
}class CMainWindow : public QMainWindow
{Q_OBJECTpublic:explicit CMainWindow(QWidget parent nullptr);~CMainWindow();private slots:/** brief on_btnCustom_clicked 自定义条件添加响应函数/void on_btnCustom_clicked();/** brief on_btnInitData_clicked 数据初始化响应函数*/void on_btnInitData_clicked();private:Ui::CMainWindow *ui;QStandardItemModel *m_model; // 数据模型CSortFilterProxyModel *m_customFilterModel; // 自定义过滤器模型
};#endif // CMAINWINDOW_H
CMainWindow.cpp
#include CMainWindow.h
#include ui_CMainWindow.h#include QMessageBoxCMainWindow::CMainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::CMainWindow)
{ui-setupUi(this);// 数据模型对象创建m_model new QStandardItemModel;// 自定义过滤器类对象创建m_customFilterModel new CSortFilterProxyModel;// 设置数据源模型m_customFilterModel-setSourceModel(m_model);// 先将正常数据模型类设置到表格中ui-tableView-setModel(m_customFilterModel);// 设置表格可排序设置过后通过自定义lessThan函数排序ui-tableView-setSortingEnabled(true);
}CMainWindow::~CMainWindow()
{// 释放内存空间delete m_customFilterModel;delete m_model;delete ui;
}void CMainWindow::on_btnCustom_clicked()
{// 获取条件字符串QString colStr ui-editCol-text();QString conditionStr ui-editCondition-text();if(colStr.isEmpty() || conditionStr.isEmpty()){QMessageBox::information(this, 提示, 条件值为空请输入条件);return;}// 获取条件并将其添加到自定义模型中m_customFilterModel-appendCondition(ui-editCol-text().toInt(), ui-editCondition-text().toInt());// 条件列和条件值编辑框清空ui-editCol-clear();ui-editCondition-clear();// 通过设置过滤条件触发自定义过滤此处条件不会影响自定义过滤m_customFilterModel-setFilterRegExp();
}void CMainWindow::on_btnInitData_clicked()
{// 虽然表格上是过滤模型但是数据还是得设置到数据模型上才可for(int row 0; row ! 10; row){for(int col 0; col ! 10; col){// 设置当前行列的item, 并初始化随机值m_model-setItem(row, col, new QStandardItem(QString::number(rand() % 100)));}}
}
CMainWindow.ui
?xml version1.0 encodingUTF-8?
ui version4.0classCMainWindow/classwidget classQMainWindow nameCMainWindowproperty namegeometryrectx0/xy0/ywidth821/widthheight525/height/rect/propertyproperty namewindowTitlestringCMainWindow/string/propertywidget classQWidget namecentralWidgetlayout classQGridLayout namegridLayoutitem row2 column1widget classQLineEdit nameeditConditionproperty nametextstring//propertyproperty nameplaceholderTextstring条件值/string/property/widget/itemitem row2 column0widget classQLineEdit nameeditColproperty nametextstring//propertyproperty nameplaceholderTextstring列/string/property/widget/itemitem row4 column0 colspan3widget classQTableView nametableView//itemitem row1 column0widget classQPushButton namebtnInitDataproperty nametextstring初始化数据/string/property/widget/itemitem row1 column1widget classQPushButton namebtnCustomproperty nametextstring添加自定义模型条件/string/property/widget/item/layout/widgetwidget classQMenuBar namemenuBarproperty namegeometryrectx0/xy0/ywidth821/widthheight23/height/rect/property/widgetwidget classQToolBar namemainToolBarattribute nametoolBarAreaenumTopToolBarArea/enum/attributeattribute nametoolBarBreakboolfalse/bool/attribute/widgetwidget classQStatusBar namestatusBar//widgetlayoutdefault spacing6 margin11/resources/connections/
/ui
CSortFilterProxyModel.h
#ifndef CSORTFILTERPROXYMODEL_H
#define CSORTFILTERPROXYMODEL_H#include QSortFilterProxyModelclass CSortFilterProxyModel : public QSortFilterProxyModel
{Q_OBJECT
public:explicit CSortFilterProxyModel(QObject parent nullptr);/** brief appendCondition 追加条件函数* param col 条件列* param val 条件值/void appendCondition(int col, int val);// QSortFilterProxyModel interface
protected:/** brief filterAcceptsRow 过滤行函数* param source_row 当前行索引* param source_parent 当前行父对象没有则为空* return 过滤结果/bool filterAcceptsRow(int source_row, const QModelIndex source_parent) const;/** brief lessThan 排序函数* param source_left 比较的左值* param source_right 比较的右值* return 比较结果*/bool lessThan(const QModelIndex source_left, const QModelIndex source_right) const;private:QMapint, int m_mapFilterCondition; // 条件值保存容器列 条件值};#endif // CSORTFILTERPROXYMODEL_H
CSortFilterProxyModel.cpp
#include CSortFilterProxyModel.h#include QDebug
#include QStandardItemModelCSortFilterProxyModel::CSortFilterProxyModel(QObject *parent) : QSortFilterProxyModel(parent)
{}void CSortFilterProxyModel::appendCondition(int col, int val)
{// 直接赋值不存在会添加已存在会更新m_mapFilterCondition[col] val;
}bool CSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex source_parent) const
{// 定义返回值变量bool ret true;// 获取数据源模型对象并转换为需要的类型模板QStandardItemModel *srcModel dynamic_castQStandardItemModel *(sourceModel());if(nullptr ! srcModel){foreach(int col, m_mapFilterCondition.keys()){// 获取当前的item对象QStandardItem *item srcModel-item(source_row, col);// 此时对应item不为空且整形值要小于条件值才显示if(nullptr ! item m_mapFilterCondition[col] item-text().toInt()){ret false;break;}}}return ret;
}bool CSortFilterProxyModel::lessThan(const QModelIndex source_left, const QModelIndex source_right) const
{// 当前行为取余2等于0时返回true(就是说默认降序排序偶数行在前)return 0 source_left.row() % 2;
}
总结
虽然自定义排序和过滤比较简单但是在项目中非常实用如需要将某行/列置顶特殊条件过滤等。
友情提示——哪里看不懂可私哦让我们一起互相进步吧 创作不易请留下一个免费的赞叭 谢谢 o/)
注文章为作者编程过程中所遇到的问题和总结内容仅供参考若有错误欢迎指出。 注如有侵权请联系作者删除
- 上一篇: 网站建设制作确认单万能搜索引擎
- 下一篇: 网站建设制作设计公司佛山网页设计教程清华大学出版社
相关文章
-
网站建设制作确认单万能搜索引擎
网站建设制作确认单万能搜索引擎
- 技术栈
- 2026年03月21日
-
网站建设制作哪家便宜网站设计培训费用是多少
网站建设制作哪家便宜网站设计培训费用是多少
- 技术栈
- 2026年03月21日
-
网站建设制作哪家便宜网站缓存优化怎么做
网站建设制作哪家便宜网站缓存优化怎么做
- 技术栈
- 2026年03月21日
-
网站建设制作设计公司佛山网页设计教程清华大学出版社
网站建设制作设计公司佛山网页设计教程清华大学出版社
- 技术栈
- 2026年03月21日
-
网站建设制作设计开发网站设计 线框图
网站建设制作设计开发网站设计 线框图
- 技术栈
- 2026年03月21日
-
网站建设制作设计施工者网官网
网站建设制作设计施工者网官网
- 技术栈
- 2026年03月21日
