当前位置:网站首页>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
边栏推荐
- Non rigid / flexible point cloud ICP registration
- MySQL (2) -- simple query, conditional query
- 帶外和帶內的區別
- Code farmers to improve productivity
- 21.PWM应用编程
- 2:第一章:认识JVM规范1:JVM简介;
- Initial experience | purchase and activate typora software
- 3D point cloud slam
- asp. Net pop-up layer instance
- poj 2762 Going from u to v or from v to u? (推断它是否是一个薄弱环节图)
猜你喜欢

Go language implementation principle -- map implementation principle

Comparison of parameters between TVs tube and zener diode

MySQL delete uniqueness constraint unique

Three. Js-01 getting started

698. 划分为k个相等的子集 ●●

14种神笔记方法,只需选择1招,让你的学习和工作效率提高100倍!

MySQL replace primary key delete primary key add primary key

98. 验证二叉搜索树 ●●

orgchart. JS organization chart, presenting structural data in an elegant way

Initial experience | purchase and activate typora software
随机推荐
3D point cloud slam
Data analysis - Thinking foreshadowing
(4) UART application design and simulation verification 2 - RX module design (stateless machine)
Hcip course notes-16 VLAN, three-tier architecture, MPLS virtual private line configuration
White hat talks about web security after reading 2
6-axis and 9-axis IMU attitude estimation
【LeetCode】5. Valid Palindrome·有效回文
regular expression
From the perspective of quantitative genetics, why do you get the bride price when you get married
Brushless drive design -- on MOS drive circuit
Multi camera stereo calibration
Introduction to JVM
Comparison of parameters between TVs tube and zener diode
The interface of grafana tool displays an error, incluxdb error
Realize reverse proxy client IP transparent transmission
424. The longest repeated character after replacement ●●
Difference between out of band and in band
Use of metadata in golang grpc
数学公式截图识别神器Mathpix无限使用教程
Multi sensor fusion of imu/ optical mouse / wheel encoder (nonlinear Kalman filter)