Qt教程 — 3.3 深入了解Qt 控件:Input Widgets部件(2)

目录

1 Input Widgets简介

2 如何使用Input Widgets部件

2.1 QSpinBox组件-窗口背景不透明调节器

2.2 DoubleSpinBox 组件-来调节程序窗口的整体大小

2.3 QTimeEdit、QDateEdit、QDateTimeEdit组件-编辑日期和时间的小部件


Input Widgets部件部件较多,将分为三篇文章介绍

文章1(Qt教程 — 3.2 深入了解Qt 控件:Input Widgets部件(1)-CSDN博客):ComboBox (组合框)、FontComboBox (字体组合框)、LineEdit (单行编辑框)、TextEdit (文本编辑框)、PlainTextEdit (纯文本编辑框)

文章2(本文):SpinBox (数字旋转框)、DoubleSpinBox (双精度数字旋转框)、TimeEdit (时间编辑框):、DateEdit (日期编辑框)、DateTimeEdit (日期时间编辑框): 

文章3(链接):Dial (数字拨盘框)、HorizontalScrollBar (水平滚动条)、VerticalScrollBar (垂直滚动条): 、HorizontalSlider (水平滑动条)、VerticalSlider (垂直滑动条)、KeySequenceEdit (按键序列编辑框)

1 Input Widgets简介

Qt的Input Widgets部件是一系列专门用于数据输入的界面元素。它们允许用户通过图形界面与应用程序进行交互,并提供不同的数据输入方式。以下是一些常见的Input Widgets部件:

  1. SpinBox (数字旋转框): QSpinBox 继承 QAbstractSpinBox。允许用户通过点击箭头或输入选择一个整数值。

  2. DoubleSpinBox (双精度数字旋转框): QDoubleSpinBox 继承 QAbstractSpinBox。与SpinBox类似,但用于选择一个浮点数值。

  3. TimeEdit (时间编辑框): QTimeEdit 继承 QDateTimeEdit。允许用户输入和选择一个特定的时间。

  4. DateEdit (日期编辑框): QDateEdit 继承 QDateTimeEdit。允许用户输入和选择一个特定的日期。

  5. DateTimeEdit (日期时间编辑框): 结合了DateEdit和TimeEdit的功能,允许用户输入和选择一个特定的日期和时间。

2 如何使用Input Widgets部件

2.1 QSpinBox组件-窗口背景不透明调节器

用一个 QSpinBox 来调节程序窗体的整体不透明度。按照文章新建项目(Qt教程 — 1.3 如何创建Qt项目-CSDN博客)。

(1)在头文件“mainwindow.h”修改代码,具体代码如下。1)导入<QSpinBox >文件 —> 2)声明一个 QSpinBox 对象和对应槽函数。完整代码如下。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QSpinBox>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;//声明一个 QSpinBox 对象QSpinBox *spinBox;private slots://槽函数void spinBoxValueChanged(int);
};
#endif // MAINWINDOW_H

(2)在文件“mainwindow.cpp”修改代码,具体代码如下。 1)设置主窗体的显示位置与大小。—> 2)实例化comboBox对象,设置comboBox的显示位置与大小。—> 3)设置spinBox范围、步长、初始值和后缀参数。—>4)信号槽连接—>5)写出槽函数,设置不透明度。添加完整代码如下。

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);/******** 1 *********/this->setGeometry(0, 0, 800, 480);// 设置主窗口背景颜色, rgb 颜色标准, a 代表不透明度(0~100)this->setStyleSheet("QMainWindow{background-color: ""rgba(100, 100, 100, 100%) }");// 实例化QSpinBox对象和显示位置spinBox = new QSpinBox(this);spinBox->setGeometry(0, 5, 150, 30);// 设置范围不透明度范围 0~100spinBox->setRange(0, 100);// 设置步长为 10spinBox->setSingleStep(5);// 设置初始值为 100spinBox->setValue(100);// 设置后缀spinBox->setSuffix("%不透明度");// 信号槽连接connect(spinBox,SIGNAL(valueChanged(int)), this,SLOT(spinBoxValueChanged(int)));
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::spinBoxValueChanged(int opacity)
{// 转换为 double 数据类型double dobleopacity = (double)opacity / 100;// 设置窗体不透明度,范围是 0.0~1.0。 1 则为不透明, 0 为全透明this->setWindowOpacity(dobleopacity);
}

(3)程序编译运行的结果如下,程序初始化界面时是全不透明,不透明度值为 100%,当点击
向下调节 SpinBox 后,整个窗体的不透明将会变小。当不透明度的值变小时,窗口将透明化。

2.2 DoubleSpinBox 组件-来调节程序窗口的整体大小

用一个 QDoubleSpinBox 来调节程序窗口的整体大小。。按照文章新建项目

(1)在头文件“mainwindow.h”修改代码,具体代码如下。1)导入<QDoubleSpinBox>文件 —> 2)声明一个 DoubleSpinBox 对象和对应槽函数。完整代码如下。(注意:为了简便,直接在上节的项目中添加代码。以下代码为本节可单独运行的代码,实验结果为和前节结合的代码,后同)。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QDoubleSpinBox>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;// 声明一个 QDoubleSpinBox 对象QDoubleSpinBox *doubleSpinBox;private slots:// QDoubleSpinBox 对象槽函数void doubleSpinBoxValueChanged(double);
};
#endif // MAINWINDOW_H

(2)在文件“mainwindow.cpp”修改代码,具体代码如下。 1)设置主窗体的显示位置与大小。—> 3)实例化QDoubleSpinBox对象,设置doubleSpinBox的显示位置与大小。—> 4)设置doubleSpinBox范围、步长、初始值、前缀、后缀参数。—>5)信号槽连接—>6)写出槽函数,设置窗口大小。添加完整代码如下。

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);this->setGeometry(0, 0, 800, 480);/******** 2 *********/// 实例化QDoubleSpinBox对象和设置显示的位置与大小doubleSpinBox = new QDoubleSpinBox(this);doubleSpinBox->setGeometry(150, 5, 150, 30);// 设置前缀doubleSpinBox->setPrefix("窗口大小");// 设置后缀doubleSpinBox->setSuffix("%");// 设置范围doubleSpinBox->setRange(50.00, 100.00);// 设置初始值doubleSpinBox->setValue(100.00);// 设置步长doubleSpinBox->setSingleStep(0.1);信号槽连接connect(doubleSpinBox, SIGNAL(valueChanged(double)),SLOT(doubleSpinBoxValueChanged(double)));
));}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::doubleSpinBoxValueChanged(double value)
{// 重新计算窗口的宽与高int w = 800 * value / 100;int h = 480 * value / 100;// 重新设置窗口的宽与高this->setGeometry(0, 0, w, h);// 重新设置 doubleSpinBox 的显示位置doubleSpinBox->setGeometry(150, 5, 150, 30);
}

(3)程序编译运行的结果如下,程序初始化界面窗口大小值为 100%,当点击向下调节
QDoubleSpinBox 时,整个窗体将按 QDoubleSpinBox 里数值的比例缩小,最小为 50.00%,相反
当点击向上调节 QDoubleSpinBox 时,窗口大小将整体变大,最大为 100.00%

2.3 QTimeEdit、QDateEdit、QDateTimeEdit组件-编辑日期和时间的小部件

在Qt中,QTimeEdit、QDateEdit、QDateTimeEdit是用于时间、日期和日期时间输入的控件。它们允许用户以图形界面的方式选择和输入这些值。

使用一个 QDateTimeEdit,一个 QTimeEdit以及一个 QDateEdit,传入当前系统时间与日期,展示简单的日期时间控件使用方法。

(1)在头文件“mainwindow.h”修改代码,具体代码如下。1)导入<QDateTimeEdit>、<QTimeEdit>和<QDateEdit>文件 —> 2)声明QDateTimeEdit、QTimeEdit、QDateEdit对象。完整代码如下。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QDateTimeEdit>
#include <QTimeEdit>
#include <QDateEdit>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;// 声明QDateTimeEdit、QTimeEdit、QDateEdit对象QDateTimeEdit *dateTimeEdit;QTimeEdit *timeEdit;QDateEdit *dateEdit;
};
#endif // MAINWINDOW_H

(2)在文件“mainwindow.cpp”修改代码,具体代码如下。 1)设置主窗体的显示位置与大小。—> 2)实例化QDateTimeEdit、QTimeEdit、QDateEdit对象,设置对象显示位置与大小。添加完整代码如下。

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);this->setGeometry(0, 0, 800, 480);/******** 3 *********/// 实例化对象,传入当前日期与时间dateTimeEdit = new QDateTimeEdit(QDateTime::currentDateTime(),this);dateTimeEdit->setGeometry(300, 5, 150, 30);// 实例化对象,传入当前时间timeEdit = new QTimeEdit(QTime::currentTime(),this);timeEdit->setGeometry(300, 45, 150, 30);// 实例化对象,传入当前日期dateEdit = new QDateEdit(QDate::currentDate(),this);dateEdit->setGeometry(300, 85, 150, 30);
}MainWindow::~MainWindow()
{delete ui;
}

(3)程序编译运行的结果如下,当程序初始化时,分别显示系统当前的时间与日期。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/544670.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python深度学习之路:TensorFlow与PyTorch对比【第140篇—Python实现】

Python深度学习之路&#xff1a;TensorFlow与PyTorch对比 在深度学习领域&#xff0c;TensorFlow和PyTorch是两个备受青睐的框架&#xff0c;它们为开发人员提供了强大的工具来构建和训练神经网络模型。本文将对这两个框架进行对比&#xff0c;探讨它们的优势和劣势&#xff0…

315曝光黑灰产业链:主板机

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 315晚会曝光主板机黑灰产业链&#xff0c;主板机是什么呢?可能很多人还不知道。在这里松松给大家普及一下&#xff0c;也欢迎大家关注卢松松哟! 主板机是什么呢? 通过报废手机的主板&#xff0c;拆出来后组装成主…

Ubuntu 20.04 系统如何优雅地安装NCL?

一、什么是NCL&#xff1f; NCAR Command Language&#xff08;NCL&#xff09;是由美国大气研究中心&#xff08;NCAR&#xff09;推出的一款用于科学数据计算和可视化的免费软件。 它有着非常强大的文件输入和输出功能&#xff0c;可读写netCDF-3、netCDF-4 classic、HDF4、b…

大衍数列-蓝桥杯?-Lua 中文代码解题第2题

大衍数列-蓝桥杯&#xff1f;-Lua 中文代码解题第2题 中国古代文献中&#xff0c;曾记载过“大衍数列”, 主要用于解释中国传统文化中的太极衍生原理。 它的前几项是&#xff1a;0、2、4、8、12、18、24、32、40、50 … 其规律是&#xff1a;对偶数项&#xff0c;是序号平方再除…

React 实现下拉刷新效果

简介 本文基于react实现下拉刷新效果&#xff0c;在下拉的时候会进入loading状态。 实现效果 效果如上图所示&#xff0c;在下拉到底部时候&#xff0c;会出现loading条&#xff0c;在处理完成后loading条消失。 具体代码 布局 & 逻辑 import {useRef, useState} from …

C语言-strtok(切片的使用)

strtok&#xff08;切片的使用&#xff09; 使用规则 使用的基本情况 strcpy 第二次调用的时候传的是空指针 所以打印出来的是 每一次调用函数都会把当前函数的地址记住 所以二次调用的时候 传的是null 连起始位置都不传了 只是传null 但是需要知道的是 当知道三段 你调用第…

zookeeper快速入门一:zookeeper安装与启动

本文是zookeeper系列之快速入门中的第一篇&#xff0c;欢迎大家观看与指出不足。 写在前面&#xff1a; 不影响教程&#xff0c;笔者安装zookeeper用的是WSL(windows下的linux子系统&#xff09;&#xff0c;当然你想直接在windows上用zookeeper也是可以的。 如果你也想用ws…

JSP+Servlet开发汽车租赁管理系统

开发工具&#xff1a;EclipseJdkTomcatSQLServer数据库 链接: https://pan.baidu.com/s/1O5tGguNl6V1CvSpN-amNXA 提取码: exak 如果需要&#xff0c;联系下面的客服人员

NodeJS学习总结

Nodejs 可用于开发服务端应用、开发工具类应用、开发桌面端应用&#xff1b;nodejs是ecmscript的核心语法&#xff0c;nodejs中不能使用BOM和DOM的API,他的顶层对象是global,可以用globalThis访问顶层对象&#xff1b;可以用console和定时器API。 Buffer(缓冲器) 本质上是一…

(学习日记)2024.03.12:UCOSIII第十四节:时基列表

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

ts的interface和type区别

1. 场景 interface 是用来描述对象类型的结构&#xff0c;可以定义对象的属性名和属性值的类型&#xff0c;也可以定义函数类型。interface User {name: string;age: number;sayHello(): void; } const user: User {name: "",age: 2,sayHello() {...} }可以用这个U…

数据结构 之 二叉树

&#x1f389;欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨ &#x1f389;感谢各位读者在百忙之中抽出时间来垂阅我的文章&#xff0c;我会尽我所能向的大家分享我的知识和经验&#x1f4d6; &#x1f389;希望我们在一篇篇的文章中能够共同进步&#xff01;&#xff01;&…