QComboBox是Qt中用于显示下拉列表框的控件,可以从预定义的选项中选择一个或多个选项
常用属性
属性 | 说明 |
currentText | 当前选中的文本 |
currentIndex | 当前选中的条目的下标 |
editable | 是否允许修改 设置为true时,可以直接输入,也可以搭配validator进行验证 |
iconSize | 下拉框图标的大小 |
maxCount | 最多允许多少个条目 |
核心方法
方法 | 说明 |
addItem(const QString&) | 添加一个条目 |
currentIndex() | 获取当前条目的下标 从0开始计算,如果没有条目被选中,值为-1 |
currentText() | 获取当前条目的文本内容 |
核心信号
信号 | 说明 |
activated(int) activated(const QString&) | 当用户通过下拉框选择一个选项时发出,重复选择相同的选项也会触发 |
currentTextChanged(const QString) | 当前下拉框的文本改变时触发,通过下拉框和输入改变文本都会触发 |
currentIndexChanged(int) currentIndexChanged(const QString&) | 当选项改变时发出,重复选择相同的选项不会触发 |
highlighted(int) highlighted(const QString&) | 鼠标扫过某个选项时,选项有高亮,发出该信号 |
示例:麦麦当点餐,可通过下拉框选择,也可直接输入,点击“提交”按钮对订单进行打印
代码:
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//主标题居中
ui->label->setAlignment(Qt::AlignHCenter);
//给主食添加选项
ui->comboBox_staple->addItem("麦麦鸡腿堡");
ui->comboBox_staple->addItem("香辣鸡腿堡");
ui->comboBox_staple->addItem("双层吉士堡");
//给小食添加选项
ui->comboBox_snacks->addItem("鸡块");
ui->comboBox_snacks->addItem("翅根");
ui->comboBox_snacks->addItem("小鸡腿");
//给饮料添加选项
ui->comboBox_drink->addItem("雪碧");
ui->comboBox_drink->addItem("可乐");
ui->comboBox_drink->addItem("芬达");
//设置可编辑
ui->comboBox_staple->setEditable(true);
ui->comboBox_snacks->setEditable(true);
ui->comboBox_drink->setEditable(true);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_comboBox_staple_activated(const QString &arg1)
{
ui->label_staple->setText("主食:" + arg1);
}
void Widget::on_comboBox_snacks_activated(const QString &arg1)
{
ui->label_snacks->setText("小食:" + arg1);
}
void Widget::on_comboBox_drink_activated(const QString &arg1)
{
ui->label_drink->setText("饮料:" + arg1);
}
void Widget::on_pushButton_clicked()
{
qDebug() << "主食:" << ui->comboBox_staple->currentText()
<< "小食:" << ui->comboBox_snacks->currentText()
<< "饮料:" << ui->comboBox_drink->currentText();
}