当前位置:网站首页>Qcombox (rewrite) + qcompleter (auto completion, auto loading the drop-down options of qcombox, setting the background color)
Qcombox (rewrite) + qcompleter (auto completion, auto loading the drop-down options of qcombox, setting the background color)
2022-07-05 23:33:00 【Licht powder】
Example :
#ifndef ComplexCombox_H
#define ComplexCombox_H
#include <QObject>
#include <QLineEdit>
#include <QEvent>
#include <QKeyEvent>
#include <QWidget>
#include <QDebug>
#include <QTimer>
#include <QComboBox>
#include <QCompleter>
#include <QStringListModel>
#include <QHeaderView>
#include <QLinearGradient>
#include "lightgroupbutton.h"
#include "data/jsondatamanager.h"
#define COMMOM_ADDR_COLOR "#D3D3D3"
#define USED_ADDR_COLOR "#EEEE00"
class ComplexCombox : public QComboBox
{
Q_OBJECT
public:
explicit ComplexCombox(QWidget *parent = 0);
~ComplexCombox();
protected:
// To load dynamically, you need to rewrite this drop-down function
void showPopup()override;
private:
void initCtr();
void initData();
private:
QComboBox *m_combox;
QCompleter *m_completer;
QList<int> m_qlAddr;
int m_iComboxIndex;
int m_iSelectBtnIndex;
};
#endif // ComplexCombox_H
#include "complexcombox.h"
ComplexCombox::ComplexCombox(QWidget *parent) :
QComboBox(parent)
{
initCtr();
}
ComplexCombox::~ComplexCombox()
{
}
void ComplexCombox::initCtr()
{
m_iComboxIndex=0;
m_iSelectBtnIndex=0;
initData();
setInsertPolicy(QComboBox::InsertAtCurrent);
//setFixedSize(50,20);
setCurrentIndex(0);
setEditable(true);
QRegExp rx("^([A-Da-d]{1}([1-4]{1}[0-9]{2}|[5]{1}[1]{1}[0-2]{1}|[5]{1}[0]{1}[0-9]{1}|[1-9]{1}[0-9]{1}|[1-9]{1}))$");
QRegExpValidator *latitude = new QRegExpValidator(rx,this->lineEdit());
this->lineEdit()->setValidator(latitude);
this->lineEdit()->setCompleter(m_completer);// Filter to be installed in lineEdit Inside , Otherwise it won't work
connect(lineEdit(),SIGNAL(editingFinished()),this,SLOT(slotCboxEditFinished()));
connect(this,SIGNAL(activated(QString)),this,SLOT(slotCboxActived(QString)));
}
void ComplexCombox::initData()
{
QStringList slAddr;
for(int i=0;i<2048;i++)
{
m_qlAddr.append(i);
slAddr << playAddrCovertToSaveAddr(i);
}
m_completer = new QCompleter(slAddr,this);
m_completer->setFilterMode(Qt::MatchStartsWith);
m_completer->setCaseSensitivity(Qt::CaseInsensitive);
}
void ComplexCombox::showPopup()
{
emit sigGetCurtBtnIndex(m_iComboxIndex);// It is not necessary to , What I need
QComboBox::clear();// It is necessary to
QString sCurrentText = this->currentText();// It is necessary to
// Here you can select the data you want to display in the drop-down box
// You can read files and other things , See what you want
for(int i=0;i<m_qlAddr.size();i++)
{
addItem(m_qlAddr.value(i));
if(qlTempUsedAddr.contains(m_qlAddr.value(i)))
{
this->setItemData(i,QColor(USED_ADDR_COLOR),Qt::BackgroundColorRole);
// This can add the background color of the drop-down item , You can also arrange according to your own needs
// Give each of the drop-down boxes item Add colors or pictures with setItemData, Adding colors or pictures depends on the third parameter (this It's overloaded QComboBox)
}
else
{
this->setItemData(i,QColor(COMMOM_ADDR_COLOR),Qt::BackgroundColorRole);
}
}
setCurrentText(sCurrentText);// It is necessary to
QComboBox::showPopup();// It is necessary to
}
QComboBox Custom style ( Reload drop-down box ) Comprehensive usage
边栏推荐
- TVS管 与 稳压二极管参数对比
- February 13, 2022-4-symmetric binary tree
- TVS管和ESD管的技术指标和选型指南-嘉立创推荐
- Data type, variable declaration, global variable and i/o mapping of PLC programming basis (CoDeSys)
- Multi view 3D reconstruction
- Hcip course notes-16 VLAN, three-tier architecture, MPLS virtual private line configuration
- The PNG image is normal when LabVIEW is opened, and the full black image is obtained when Photoshop is opened
- C# Linq Demo
- 无刷驱动设计——浅谈MOS驱动电路
- Go language introduction detailed tutorial (I): go language in the era
猜你喜欢
Attacking technology Er - Automation
CorelDRAW plug-in -- GMS plug-in development -- new project -- macro recording -- VBA editing -- debugging skills -- CDR plug-in (2)
成为程序员的你,后悔了吗?
Sum of two numbers, sum of three numbers (sort + double pointer)
Three. JS VR house viewing
Neural structured learning - Part 2: training with natural graphs
Switching power supply buck circuit CCM and DCM working mode
3:第一章:认识JVM规范2:JVM规范,简介;
两数之和、三数之和(排序+双指针)
Initial experience | purchase and activate typora software
随机推荐
698. Divided into k equal subsets ●●
(4)UART应用设计及仿真验证2 —— TX模块设计(无状态机)
UVA11294-Wedding(2-SAT)
Dynamic planning: robbing families and houses
Using LNMP to build WordPress sites
TVS管和ESD管的技術指標和選型指南-嘉立創推薦
派对的最大快乐值
(4) UART application design and simulation verification 2 - TX module design (stateless machine)
帶外和帶內的區別
How to design API return code (error code)?
LeetCode——Add Binary
February 13, 2022-4-symmetric binary tree
Creative mode 1 - single case mode
Multi camera stereo calibration
orgchart. JS organization chart, presenting structural data in an elegant way
Krypton Factor-紫书第七章暴力求解
(4)UART應用設計及仿真驗證2 —— TX模塊設計(無狀態機)
regular expression
White hat talks about web security after reading 2
并查集实践