当前位置: 首页 > article >正文

Qt 5.14.2 学习记录 —— 십삼 QComboBox、QSpinBox、QDateTimeEdit、QDial、QSlider

文章目录

  • 1、QComboBox
  • 2、QSpinBox
  • 3、QDateTimeEdit
  • 4、QDial
  • 5、QSlider


1、QComboBox

下拉框

在这里插入图片描述
在这里插入图片描述

信号

在这里插入图片描述

写程序来查看各个功能

在这里插入图片描述

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("雪碧");
}

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

右击下拉框,编辑项目也可以添加内容。

另一个例子,通过文件/网络来添加下拉框内容

在这里插入图片描述

#include <QDebug>
#include <fstream>

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

    std::ifstream file("E:/test.txt");
    if (!file.is_open())
    {
        qDebug() << "文件打开失败";
        return ;
    }
    std::string line;
    while (std::getline(file, line))
    {
        // 括号中把std::string 改为 QString
        // QString 改为 std::string 是 .toStdString()
        ui->comboBox->addItem(QString::fromStdString(line));
    }
    file.close();
}

2、QSpinBox

带有按钮的输入框,微调框。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5c9560d549594a12b801829e81986137.png)
在这里插入图片描述

在这里插入图片描述

#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("雪碧");

    // 限制一下可选的量
    ui->spinBox->setRange(1, 5);
    ui->spinBox_2->setRange(1, 5);
    ui->spinBox_3->setRange(1, 5);

    ui->spinBox->setValue(1);
    ui->spinBox_2->setValue(1);
    ui->spinBox_3->setValue(1);
}

void Widget::on_pushButton_clicked()
{
    qDebug() << "当前订单: "
             << ui->comboBox->currentText() << ": " << ui->spinBox->value()
             << ui->comboBox_2->currentText() << ": " << ui->spinBox_2->value()
             << ui->comboBox_3->currentText() << ": " << ui->spinBox_3->value();
}

3、QDateTimeEdit

在这里插入图片描述
在这里插入图片描述

写一个时间计算器

在这里插入图片描述

void Widget::on_pushButton_clicked()
{
    QDateTime timeOld = ui->dateTimeEdit->dateTime();
    QDateTime timeNew = ui->dateTimeEdit_2->dateTime();

    // QDateTime中, daysTo计算两个时间的日期的差值, secsTo计算两个时间的秒数的差值
    int days = timeOld.daysTo(timeNew);
    int seconds = timeOld.secsTo(timeNew);
    
    int hours = (seconds / 3600) % 24; // 秒转为小时
    ui->label->setText(QString("相差 ") + QString::number(days) + QString(" 天 ") + QString::number(hours) + QString(" 小时"));
}

也可以自己计算天数

void Widget::on_pushButton_clicked()
{
    QDateTime timeO ld = ui->dateTimeEdit->dateTime();
    QDateTime timeNew = ui->dateTimeEdit_2->dateTime();

    // QDateTime中, daysTo计算两个时间的日期的差值, secsTo计算两个时间的秒数的差值
    //int days = timeOld.daysTo(timeNew);
    int seconds = timeOld.secsTo(timeNew);
    
    int days = (seconds / 3600) / 24;
    int hours = (seconds / 3600) % 24; // 秒转为小时
    ui->label->setText(QString("相差 ") + QString::number(days) + QString(" 天 ") + QString::number(hours) + QString(" 小时"));
}

4、QDial

表示旋钮

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通过旋钮控制窗口的不透明度

void Widget::on_dial_valueChanged(int value)
{
    // 1完全不透明, 0完全透明, 是一个小数
    this->setWindowOpacity((double)value / 100);
}

5、QSlider

滑动条

在这里插入图片描述
在这里插入图片描述

信号

在这里插入图片描述

写一个水平,一个垂直进度条,用方向键可以控制。

在这里插入图片描述

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

    ui->horizontalSlider->setMinimum(100);
    ui->horizontalSlider->setMaximum(2100);
    ui->horizontalSlider->setValue(400);
    ui->horizontalSlider->setSingleStep(50);

    ui->verticalSlider->setMinimum(100);
    ui->verticalSlider->setMaximum(2100);
    ui->verticalSlider->setValue(700);
    ui->verticalSlider->setSingleStep(50);
}

void Widget::on_horizontalSlider_valueChanged(int value)
{
    const QRect& rect = this->geometry();
    this->setGeometry(rect.x(), rect.y(), value, rect.height());
}

void Widget::on_verticalSlider_valueChanged(int value)
{
    const QRect& rect = this->geometry();
    this->setGeometry(rect.x(), rect.y(), rect.width(), value);
}

用快捷键来操作滑动条

# include <QShortCut>

    QShortcut* shortCut1 = new QShortcut(this);
    shortCut1->setKey(QKeySequence("-"));
    QShortcut* shortCut2 = new QShortcut(this);
    shortCut2->setKey(QKeySequence("+"));

    connect(shortCut1, &QShortcut::activated, this, &Widget::subValue);
    connect(shortCut2, &QShortcut::activated, this, &Widget::addValue);

void Widget::subValue()
{
    int value = ui->horizontalSlider->value();
    if (value <= ui->horizontalSlider->minimum())
        return;
    ui->horizontalSlider->setValue(value - 5);
}

void Widget::addValue()
{
    int value = ui->horizontalSlider->value();
    if (value >= ui->horizontalSlider->maximum())
        return;
    ui->horizontalSlider->setValue(value + 5);
}

结束。


http://www.kler.cn/a/505417.html

相关文章:

  • 你喜欢用什么编辑器?
  • 关于H5复制ios没有效果
  • 《数据思维》之数据可视化_读书笔记
  • 【 PID 算法 】PID 算法基础
  • 【BLE】CC2541之ADC
  • UML系列之Rational Rose笔记九:组件图
  • Jmeter 简单使用、生成测试报告(一)
  • 升级 SpringBoot3 全项目讲解 — 为什么 SpringBoot3 应该抛弃 Maven,搭配 Gradle 来使用?
  • Chapter5.3 Decoding strategies to control randomness
  • 论文阅读:Searching for Fast Demosaicking Algorithms
  • 从语音识别到语音合成:一步步构建智能语音交互系统
  • (12)springMVC文件的上传
  • pytorch快速入门--数据的基本操作
  • GPU算力平台|在GPU算力平台部署智能媒体生成助手LivePortrait的应用教程
  • uni-app黑马商场项目-4封装$myrequest方法并挂载到全局
  • 44.ComboBox的数据绑定 C#例子 WPF例子
  • APP推荐:全新TV端来了,8K原画电视版
  • iOS - 底层实现中涉及的类型
  • 计算机网络之---SSL/TLS协议
  • 人工智能任务20-利用LSTM和Attention机制相结合模型在交通流量预测中的应用
  • Excel 技巧09 - 通过IF筛选数据,并给对象单元格赋值背景色 (★)
  • maven 安装jar到本地仓库和上传至远程仓库
  • Java开发防止SQL注入攻击
  • 深度学习的超参数
  • dockerfile实现lnmp
  • 深度学习-卷积神经网络实战文档注释