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.pswp.cn/bicheng/20979.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20979.shtml
英文地址,請注明出處:http://en.pswp.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); …