下拉框QComboBox

文本

// 获取和设置当前条目的索引
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值