当前位置:网站首页>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
边栏推荐
- C Primer Plus Chapter 9 question 10 binary conversion
- 数据库基础知识(面试)
- (4)UART应用设计及仿真验证2 —— RX模块设计(无状态机)
- yate. conf
- How to insert data into MySQL database- How can I insert data into a MySQL database?
- STM32__06—单通道ADC
- 3: Chapter 1: understanding JVM specification 2: JVM specification, introduction;
- Golang code checking tool
- Pyqt control part (I)
- Using LNMP to build WordPress sites
猜你喜欢
TVS管和ESD管的技術指標和選型指南-嘉立創推薦
98. 验证二叉搜索树 ●●
698. Divided into k equal subsets ●●
开关电源Buck电路CCM及DCM工作模式
orgchart. JS organization chart, presenting structural data in an elegant way
芯源&立创EDA训练营——无刷电机驱动
Spécifications techniques et lignes directrices pour la sélection des tubes TVS et ESD - Recommandation de jialichuang
Use of grpc interceptor
STM32__06—单通道ADC
CIS基准测试工具kube-bench使用
随机推荐
Multi sensor fusion of imu/ optical mouse / wheel encoder (nonlinear Kalman filter)
(4)UART應用設計及仿真驗證2 —— TX模塊設計(無狀態機)
Différence entre hors bande et en bande
UVA11294-Wedding(2-SAT)
yate. conf
Difference between out of band and in band
Attacking technology Er - Automation
Creative mode 1 - single case mode
poj 2762 Going from u to v or from v to u? (infer whether it is a weak link diagram)
Three. Js-01 getting started
动态规划 之 打家劫舍
White hat talks about web security after reading 2
Southeast Asia e-commerce guide, how do sellers layout the Southeast Asia market?
How to enable relationship view in phpMyAdmin - how to enable relationship view in phpMyAdmin
(4) UART application design and simulation verification 2 - TX module design (stateless machine)
CIS benchmark tool Kube bench
【经典控制理论】自控实验总结
Objective C message dispatch mechanism
UVA11294-Wedding(2-SAT)
Design and implementation of secsha system