《QT实用小工具·四十三》历史编辑器(支持历史搜索 关键字匹配)

ops/2024/10/21 7:47:58/

1、概述
源码放在文章末尾

该项目实现了在输入框中输入部分信息能全部展现之前的历史输入信息,支持历史搜索和关键词匹配,项目demo演示如下所示:
在这里插入图片描述

项目部分代码如下所示:

#include "historymodel.h"
#include <QMultiMap>HistoryModel::HistoryModel()
{/*** @note historyData <QList>* 用于存储历史记录。* 可自由填充,我这里直接手动填充了。*/qsrand(uint(time(nullptr)));for (int i = 0; i < 20; ++i) {QString randStr;for (int j = 0; j < 10; ++j) {randStr += QString::number(qrand() % 10);}m_historyData.push_back(randStr);}m_data = m_historyData;
}int HistoryModel::rowCount(const QModelIndex &parent) const
{Q_UNUSED(parent);return m_data.count();
}int HistoryModel::columnCount(const QModelIndex &parent) const
{Q_UNUSED(parent);return 1;
}QVariant HistoryModel::data(const QModelIndex &index, int role) const
{if (index.row() < 0 || index.row() >= m_data.count())return QVariant();switch (role) {case Qt::DisplayRole:return m_data.at(index.row());default:break;}return QVariant();
}void HistoryModel::sortByKey(const QString &key)
{if (key.isEmpty()) {beginResetModel();m_data = m_historyData;endResetModel();} else {QMultiMap<int, QString> temp;for (auto str : m_historyData) {int ret = str.indexOf(key);if (ret == -1) continue;else temp.insert(ret, str);}beginResetModel();m_data.clear();if (!temp.isEmpty()) {//也可 for range-basedfor (auto it = temp.begin(); it != temp.end(); it++) {m_data.push_back(it.value());}}endResetModel();}
}

源码下载


http://www.ppmy.cn/ops/27219.html

相关文章

Oracle 存过 与Postgresql 的存过的差别

一、Oracle 存储过程 CREATE OR REPLACE PROCEDURE display_employees_with_cursor AS -- 声明游标 CURSOR emp_cursor IS SELECT employee_id, first_name, salary FROM employees; -- 声明变量来存储从游标中检索的数据 v_employee_id employees.employee_id%TYPE; …

Pytorch基础:torch.load_state_dict()方法在加载时不会检查类型

相关阅读 Pytorch基础https://blog.csdn.net/weixin_45791458/category_12457644.html?spm1001.2014.3001.5482 笔者在使用torch.nn.module的load_state_dict中出现了一个问题&#xff0c;一个被注册的张量在加载后居然没有变化&#xff0c;一开始以为是加载出现了问题&#…

推荐一个wordpress免费模板下载

首页大背景图&#xff0c;首屏2张轮播图&#xff0c;轮换展示&#xff0c;效果非常的炫酷&#xff0c;非常的哇噻&#xff0c;使用这个主题搭建的wordpress网站&#xff0c;超过了200个&#xff0c;虽然是一个老主题了&#xff0c;不过是经得起时间考验的&#xff0c;现在用起来…

Oracle数据常驻程序内存优化【数据库实例优化系列三】

Oracle程序常驻程序内存优化【数据库实例优化系列二】-CSDN博客 在生产中,为提高用户的访问速度。可以将经常使用的表常驻与内存中。避免频繁的访问磁盘,降低IO。 虽然会占用一定的内存,但是效果还是很明显的。 如果不是用了,DBA可以将其删除。 一、数据缓冲池 数据库…

CentOS/Anolis的Linux系统如何通过VNC登录远程桌面?

综述 需要在server端启动vncserver&#xff0c;推荐tigervnc的server 然后再本地点来启动client进行访问&#xff0c;访问方式是IPport&#xff08;本质是传递数据包到某个ip的某个port&#xff09; 然后需要防火墙开启端口 服务器上&#xff1a;安装和启动服务 安装服务 y…

PotatoPie 4.0 实验教程(32) —— FPGA实现摄像头图像浮雕效果

什么是浮雕效果&#xff1f; 浮雕效果是一种图像处理技术&#xff0c;用于将图像转换为看起来像浮雕一样的效果&#xff0c;给人一种凸起或凹陷的立体感觉&#xff0c;下面第二张图就是图像处理实现浮雕效果。 不过这个图是用Adobe公司的PS人工P图实现的&#xff0c;效果比较…

前端开发工程师——Vue

Vue学习笔记&#xff08;尚硅谷天禹老师&#xff09;_尚硅谷天禹老师vue2021讲课笔记下载-CSDN博客 模板语法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" co…

飞书API(6):使用 pandas 处理数据并写入 MySQL 数据库

一、引入 上一篇了解了飞书 28 种数据类型通过接口读取到的数据结构&#xff0c;本文开始探讨如何将这些数据写入 MySQL 数据库。这个工作流的起点是从 API 获取到的一个完整的数据&#xff0c;终点是写入 MySQL 数据表&#xff0c;表结构和维格表结构类似。在过程中可以有不同…