目录
输入类控件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;
}
 
                





















