qt qcomboBox实现自动检索功能 通过输入匹配字符进行筛选

本人做了一个自定义控件SeepedSearch 用于快速检索匹配的字符的下拉框 方便查找目标
直接上源码
1.
SpeedSerach.h
#pragma once

#include

class QComboBox;
class QCompleter;
class SpeedSearch : public QWidget
{
Q_OBJECT
public:
explicit SpeedSearch(QWidget *parent = 0);
void initData(const QStringList &strList);
void setEditable(bool bEnabled);
void setCurrentText(const QString& sText);
QString currentText();
void setCurrentIndex(const int& nIdx);
int currentIndex();
void AddItem(const QString& sText);
int Count();
QString itemText(int idx);
void hideSubcontrol();//掩藏下拉框
void setPlaceholderText(QString& sText);

public slots:
void slotCurrentIndexChanged(const QString &str);
signals:
void currentIndexChanged(const QString&);
protected:
void showEvent(QShowEvent *event);

private:
QComboBox *m_comboBox;
QCompleter *m_completer;
};

/

SpeedSearch.cpp
#include “SpeedComboboxSearch.h”
#include

SpeedSearch::SpeedSearch(QWidget *parent)
QWidget(parent)
, m_completer(nullptr)
{
m_comboBox = new QComboBox(this);
m_comboBox->setView(new QListView());
m_comboBox->setEditable(true);
m_comboBox->setMaxVisibleItems(30);
connect(m_comboBox, SIGNAL(activated(QString)), this, SLOT(slotCurrentIndexChanged(QString)));
QVBoxLayout *vLayout = new QVBoxLayout(this);
vLayout->setContentsMargins(0, 0, 0, 0);
vLayout->setSpacing(0);
vLayout->addWidget(m_comboBox);this->setFixedSize(160, 24);

}

void SpeedSearch::initData(const QStringList &strList)
{
if (m_completer) {
delete m_completer;
}
m_completer = new QCompleter(strList, this);
m_completer->setFilterMode(Qt::MatchContains);
m_comboBox->setCompleter(m_completer);
m_comboBox->clear();
m_comboBox->addItems(strList);
}

void SpeedSearch::setEditable(bool bEnabled)
{
m_comboBox->setEditable(bEnabled);
}

void SpeedSearch::setCurrentText(const QString & sText)
{
m_comboBox->setCurrentText(sText);
}

QString SpeedSearch::currentText()
{
return m_comboBox->currentText();
}

void SpeedSearch::setCurrentIndex(const int & nIdx)
{
m_comboBox->setCurrentIndex(nIdx);
}

int SpeedSearch::currentIndex()
{
return m_comboBox->currentIndex();
}

void SpeedSearch::AddItem(const QString & sText)
{
m_comboBox->addItem(sText);
}

QString SpeedSearch::itemText(int idx)
{
return m_comboBox->itemText(idx);
}

void SpeedSearch::hideSubcontrol()
{
m_comboBox->setStyleSheet(“QComboBox::drop-down { subcontrol-origin: padding; width: 0px; height: 0px; image: none; }”);
}

void SpeedSearch::setPlaceholderText(QString & sText)
{
m_comboBox->insertItem(0, “”);
m_comboBox->setItemText(0, sText);
}

int SpeedSearch::Count()
{
return m_comboBox->count();
}

void SpeedSearch::slotCurrentIndexChanged(const QString &str)
{
qDebug() << str;
//hide();
emit currentIndexChanged(str);
}

void SpeedSearch::showEvent(QShowEvent *event)
{
QWidget::showEvent(event);
// m_comboBox->setCurrentText(“”);
m_comboBox->setFocus();
}

//注意如果不想用qcombobox 也可以使用qlineEdit替换
这个功能主要关键的一点技术 使用QCompeter
QCompleter *m_completer;
m_completer = new QCompleter(strList, this);
m_completer->setFilterMode(Qt::MatchContains);
m_comboBox->setCompleter(m_completer);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/20979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web前端三大主流框架指的是什么

web前端三大主流框架是什么&#xff1f;前端开发师的岗位职责有哪些&#xff1f;这边整理了相关内容供大家参考了解&#xff0c;请各位小伙伴随小编一起查阅下面的内容。 web前端三大主流框架 web前端三大主流框架是Angular、React、Vue。 1.Angular Angular原名angularJS诞生…

如何用python做一个贪吃蛇程序?——浔川AI社(VIP)

1 游戏说明: 死亡条件:碰壁、吃自己! 状态:只有吃了食物才会随机生成其中一种状态,分别是:稳如老狗、幸运光滑、衰神附体之一 状态:稳如老狗:相对于上一次速度不变! 状态:幸运光滑:相对于上一次速度变慢! 状态:衰神附体:相对于上一次速度变快! 总体速率对比…

UnityAPI学习之Transform组件基本使用

目录 Transform组件 访问与获取 Transform的位置和旋转信息 Transform局部坐标和旋转信息的获取 Transform的缩放与正方向 缩放&#xff08;Scale&#xff09; 正方向 Transform相关的查找方法 销毁游戏物体 Transform组件 访问与获取 现在创建一个容器放置GrisGO物…

操作系统的分类

Linux类系统的组成 Linux操作系统Linux内核Linux应用 Linux内核是什么&#xff1f; Linux系统内核是构成Linux操作系统核心的部分&#xff0c;它是操作系统中最基础和关键的组件&#xff0c;直接与硬件交互并管理计算机系统的底层资源。以下是Linux内核主要特性和功能的概览…

一起学习大模型 - langchain里的 PromptTemplate详细介绍

系列文章目录 一起学习大模型 - 大模型的交互工具prompt简介与运用 一起学习大模型 - langchain里的PromptTemplate详细介绍 一起学习大模型 - langchain里PromptTemplate错误排查总结 文章目录 系列文章目录前言一、 安装 LangChain二、 基本用法1. 导入库并定义模板2. 填充…

API接口通道如何设置?

API接口通道如何设置&#xff1f; 如果分站点的AI接口使用openai&#xff08;站点后台->系统配置->AI参数配置->AI接口&#xff09;&#xff0c;则需要在超管后台配置接口通道&#xff0c;其他方式则无需在超管后台配置接口通道 1、进入超管后台选择接口通道&#x…

一键批量转换,高效轻松管理:解锁不同格式图片统一处理新体验,让图片管理更高效

在信息爆炸的时代&#xff0c;图片管理成为了一个不容忽视的问题。我们时常面临各种格式的图片文件&#xff0c;不同的格式不仅增加了管理的难度&#xff0c;还可能导致兼容性问题。如何快速高效地管理不同格式的图片&#xff0c;成为了现代人面临的一大挑战。现在&#xff0c;…

网上帮别人开网店卖货的骗局!

小红书帮别人开店卖货的骗局主要涉及到一些不法分子利用小红书平台的流量和用户信任度&#xff0c;通过虚假宣传、承诺高额利润等手段&#xff0c;诱骗用户开店并**所谓的“赚钱机会”。 这些骗局往往以“轻松创业、快速致富”为诱饵&#xff0c;吸引那些对创业充满热情但缺乏经…

Redis常用命令——List篇

提到List&#xff0c;我们第一时间想到的就是链表。但是在Redis中&#xff0c;List更像是一种双端队列&#xff0c;例如C中的deque。它可以快速高效的对头部和尾部进行插入和删除操作。本片文章主要对List列表的相关命令进行详解&#xff0c;希望本篇文章会对你有所帮助。 文章…

MedSegDiff-V2: Diffusion-Based Medical Image Segmentation with Transformer 论文总结

标题&#xff1a;MedSegDiff-V2: Diffusion-Based&#xff08;基于扩散模型&#xff09;Medical Image Segmentation&#xff08;医学图像分割&#xff09;with Transformer 论文&#xff08;AAAI&#xff09;&#xff1a;https://ojs.aaai.org/index.php/AAAI/article/view/28…

【避坑全攻略】如何让私人的LLM拥有一个嗓子——ChatTTS

OpenAI 发布 GPT4o 之后&#xff0c;使得越来越多的人都开始幻想属于自己的AI“伴侣”&#xff0c;这最让人惊艳的就是他们出色的TTS技术。而在此之前&#xff0c;主流的开源TTS有 XTTS 2 和 Bark。而近日&#xff0c;一个名为 ChatTTS 文本转语音项目爆火出圈&#xff0c;引来…

Python中的random.choices详解

1. 什么是random.choices函数&#xff1f; random.choices是Python标准库中random模块提供的一个函数&#xff0c;用于从给定的序列中随机选择一个值。这个函数可以用于实现随机抽样、按照概率进行选择等功能。 random.choices(population, weightsNone, *, cum_weightsNone,…

.gitignore 文件

一.什么是 .gitignore 文件 在任何当前工作的 Git 仓库中&#xff0c;每个文件都是这样的&#xff1a; 追踪的&#xff08;tracked&#xff09;- 这些是 Git 所知道的所有文件或目录。这些是新添加&#xff08;用 git add 添加&#xff09;和提交&#xff08;用 git commit 提…

汽美汽修店管理系统会员小程序的作用是什么

汽车后市场汽美汽修赛道同样存在着大量商家&#xff0c;连锁品牌店或个人小店等&#xff0c;门店扎堆且区域覆盖面积广&#xff0c;当然每天车来车往也有不少生意。 随着线上化程度加深和商家不断拓展市场的需要&#xff0c;传统运营模式可能难以满足现状&#xff0c;尤其是年…

Element - UI <el-table-column>多选数据提交后禁用已提交的多选框

1. 通过 selection-change"selectionChange" 将已选择的数据存入selectData数组中 <el-table :data"tableData" class"my-5" selection-change"selectionChange" > //多选框已选择的数据 const selectData ref([]); const sel…

在线图片测试用例

开发中经常需要mock图片&#xff0c;下面是可用于测试的在线图片URL示例&#xff0c; https://picsum.photos/200/200?random2 https://picsum.photos/200/200?random1 https://picsum.photos/300/200?random2 https://picsum.photos/300/200?random1 说明&#xff1a…

前端环境配置(后端使用前端版,简易版非专业前端)

声明本人不是专业做前端的&#xff0c;只是平常开发有时候需要运行前端代码&#xff0c;记录一下配置环境。 安装nvm nvm 即 (node version manager)&#xff0c;好处是方便切换 node.js 版本。 自己网上下载安装包即可&#xff0c;傻瓜式安装。 安装注意事项 要卸载掉现有的 …

HALCON-从入门到入门-图像格式的互相转换

1.废话 上次说到了图片的读取和写入到本地&#xff0c;这次说一下图片的格式相关。 位图和矢量图 photoshop处理出来的图片肯定叫做图片&#xff0c;那么coreDraw处理出来的图片是不是也叫图片。 之间就有区分&#xff0c;一种叫做位图&#xff0c;一种叫做矢量图 位图和矢…

AI大模型探索之路-实战篇13: 从对话到报告:打造能记录和分析的Agent智能数据分析平台

系列篇章&#x1f4a5; AI大模型探索之路-实战篇4&#xff1a;深入DB-GPT数据应用开发框架调研 AI大模型探索之路-实战篇5&#xff1a;探索Open Interpreter开放代码解释器调研 AI大模型探索之路-实战篇6&#xff1a;掌握Function Calling的详细流程 AI大模型探索之路-实战篇7…

echarts 图表不显示的问题

是这样的&#xff0c;点击详情&#xff0c;再点击统计&#xff0c;切换的时候就不会显示echarts图表&#xff0c;刚开始使用的是next Tick&#xff0c;没有使用定时器&#xff0c;后来加上了定时器就实现了如下所示&#xff1a; 代码是如下 const chartContainer ref(null); …