【Qt】输入类控件QComboBox

 

目录

 输入类控件QComboBox

例子:使用下拉框模拟点餐

例子:从文件中加载下拉框的选项


输入类控件QComboBox

  • QComboBox表示下拉框

核心属性

属性说明

currentText

当前选中的⽂本

currentIndex

当前选中的条⽬下标.

从 0 开始计算. 如果当前没有条⽬被选中, 值为 -1

editable

是否允许修改

设为 true 时, QComboBox 的⾏为就⾮常接近 QLineEdit , 也可以设置 validator

iconSize

下拉框图标 (⼩三⻆) 的⼤⼩

maxCount

最多允许有多少个条⽬

核心方法

方法说明

addItem(const QString&)

添加⼀个条⽬

currentIndex()

获取当前条⽬的下标

从 0 开始计算. 如果当前没有条⽬被选中, 值为 -1

currentText()

获取当前条⽬的⽂本内容

核心属性

信号说明

activated(int)

activated(const QString & text)

当⽤⼾选择了⼀个选项时发出.

这个时候相当于⽤⼾点开下拉框, 并且⿏标划过某个选项.

此时还没有确认做出选择

currentIndexChanged(int)

currentIndexChanged(const QString & text)

当前选项改变时发出.

此时⽤⼾已经明确的选择了⼀个选项.

⽤⼾操作或者通过程序操作都会触发这个信号.

editTextChanged(const QString& text)

当编辑框中的⽂本改变时发出

(editable 为 true 时有效)

例子:使用下拉框模拟点餐

(1)在界面上创建三个下拉框,一个提交按钮

(2)初始化三个下拉框内容

(3)给按钮添加slot函数

(4)执行代码 

代码展示:
 

#include "widget.h"
#include "ui_widget.h"

#include <QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    ui->comboBox->addItem("鸡腿堡");
    ui->comboBox->addItem("牛肉堡");
    ui->comboBox->addItem("虾堡");

    ui->comboBox_2->addItem("薯条");
    ui->comboBox_2->addItem("鸡块");
    ui->comboBox_2->addItem("鸡翅");

    ui->comboBox_3->addItem("可乐");
    ui->comboBox_3->addItem("雪碧");
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_clicked()
{
    qDebug() << ui->comboBox->currentText() << "一份,"
             << ui->comboBox_2->currentText() << "一份,"
             << ui->comboBox_3->currentText() << "一杯。";
}

例子:从文件中加载下拉框的选项

下拉框里面的内容,很多时候不是从代码中提取处理的,而是通过文件或者网络加载数据得到的。例如选课操作。

(1)在文件中创建一个.txt文件

(2)在界面上创建一个下拉框

 (3)在.cpp文件中读取.txt文件

CPU时计算机的核心,一个计算机可以没有硬盘,可以没有网卡,可以没有显示器,可以没有键盘,但是不能没有CPU,一个计算机如果没有CPU,就不能称为计算机了。

此处要求的参数时QString,不是std::string,虽然二者都是字符串,但是是不同的类型,此处需要手动的转换。

(1)std::string转换为QString

std::string s;

QString::fromStdString(s);

(2)QString转换为std::string

std::string s;

QString s1;

s1.toStdString(s);

代码展示:

#include "widget.h"
#include "ui_widget.h"

#include<QDebug>
#include<fstream>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //读取文件内容
    std::ifstream file("d:/config.txt");
    if(!file.is_open())
    {
        qDebug() << "文件打开失败";
        return;
    }
    //按行读取文本
    std::string line;
    while(std::getline(file, line))
    {
        //将读取到的每一行都放在下拉框里面
        ui->comboBox->addItem(QString::fromStdString(line));
    }
    //关闭文件
    file.close();
}

Widget::~Widget()
{
    delete ui;
}

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值