文本
// 获取和设置当前条目的索引
int currentIndex() const
void setCurrentIndex(int index)
// 获取和设置当前条目的文本
QString currentText() const
void setCurrentText(const QString &text)
// 获取和设置指定索引条目的文本
QString itemText(int index) const
void setItemText(int index, const QString &text)
图标
还可以给条目加图标
// 获取和设置对应索引条目的图标
QIcon itemIcon(int index) const
void setItemIcon(int index, const QIcon &icon)
插入和删除
---新增条目:可一次新增一个条目或多个条目,同时增加的时候可以指定图标
// 一次新增一个条目
void addItem(const QString &text, const QVariant &userData = QVariant())
void addItem(const QIcon &icon, const QString &text, const QVariant &userData = QVariant())
// 一次新增多个条目
void addItems(const QStringList &texts)
---插入条目:可一次插入一个或多个条目
// 一次插入一个条目
void insertItem(int index, const QString &text, const QVariant &userData = QVariant())
void insertItem(int index, const QIcon &icon, const QString &text, const QVariant &userData = QVariant())
// 一次插入一个条目
void insertItems(int index, const QStringList &list)
--- 插入策略:在添加条目时还可以指定插入的策略(只对addItem/addItems的插入有效,对insert系列方法不生效,别弄混了,insert总是插入到指定索引的前面)
// 获取和设置插入策略
QComboBox::InsertPolicy insertPolicy() const
void setInsertPolicy(QComboBox::InsertPolicy policy)
常用的插入策略有:
QComboBox::NoInsert
不插入QComboBox::InsertAtTop
作为第一条目插入(替换原第一条条目)QComboBox::InsertAtCurrent
替换当前条目QComboBox::InsertAtBottom
在最后一个条目之后插入QComboBox::InsertAfterCurrent
在当前条目之后插入QComboBox::InsertBeforeCurrent
在当前条目之前插入QComboBox::InsertAlphabetically
按英文字母顺序插入
---插入分隔符:可以在条目之间插入一条分隔符
// 在指定索引位置处插入分隔符
void insertSeparator(int index)
---删除条目:删除指定索引位置的条目
// 删除指定索引的条目
void removeItem(int index)
常用信号
// 当前选中的条目变化时,会发射这两个信号
void currentIndexChanged(int index)
void currentTextChanged(const QString &text)
举例
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QComboBox>
#include<QLabel>
#include<QHBoxLayout>
#include<QMessageBox>
#include<QPushButton>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr):QWidget(parent)
{
resize(400,300);
QHBoxLayout* h_box=new QHBoxLayout(this);
QLabel* city=new QLabel(this);
city->setText("籍贯:");
city->setFixedSize(50,50);
h_box->addWidget(city);
cbo_city=new QComboBox(this);
cbo_city->addItem(QIcon(":/Qing.png"),"浙江");//一次添加1个条目,带图片
cbo_city->addItems({"湖北","湖南"});//一次添加多个条目
cbo_city->setItemIcon(1,QIcon(":/Qing.png"));//给指定条目加图片
cbo_city->insertItem(1,"山东");//在湖北前面插入山东
cbo_city->insertSeparator(1);//在山东前面插入分割线
cbo_city->setCurrentIndex(0);
h_box->addWidget(cbo_city);
//绑定信号
connect(cbo_city,&QComboBox::currentIndexChanged,this,[=](){
auto current_text=cbo_city->currentText();
QMessageBox::information(this,"",QStringLiteral("当前选择:")+current_text);
});
}
~Widget()=default;
private:
QComboBox* cbo_city;
};
#endif // WIDGET_H
学习链接:https://github.com/0voice