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部件:
-
SpinBox (数字旋转框): QSpinBox 继承 QAbstractSpinBox。允许用户通过点击箭头或输入选择一个整数值。
-
DoubleSpinBox (双精度数字旋转框): QDoubleSpinBox 继承 QAbstractSpinBox。与SpinBox类似,但用于选择一个浮点数值。
-
TimeEdit (时间编辑框): QTimeEdit 继承 QDateTimeEdit。允许用户输入和选择一个特定的时间。
-
DateEdit (日期编辑框): QDateEdit 继承 QDateTimeEdit。允许用户输入和选择一个特定的日期。
-
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)程序编译运行的结果如下,当程序初始化时,分别显示系统当前的时间与日期。
相关文章:

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部件部件较多,将分为三…...

数据分析-Pandas的直接用Matplotlib绘图
数据分析-Pandas的直接用Matplotlib绘图 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表…...

Jmeter---分布式
分布式:多台机协作,以集群的方式完成测试任务,可以提高测试效率。 分布式架构:控制机(分发任务)与多台执行机(执行任务) 环境搭建: 不同的测试机上安装 Jmeter 配置基…...
安卓基础面试题
自定义view Android自定义View-CSDN博客 view和viewgroup View和ViewGroup的区别- view的事件分发 事件分发详解---历史最容易理解 组件化 Android-组件化开发 什么是ANR Android ANR详解-CSDN博客 Android性能优化 Android 优化-CSDN博客 Aroute 原理 Arouter框架原理…...

如何在 Linux ubuntu 系统上搭建 Java web 程序的运行环境
如何在 Linux ubuntu 系统上搭建 Java web 程序的运行环境 基于包管理器进行安装 Linux 会把一些软件包放到对应的服务器上,通过包管理器这样的程序,来把这些软件包给下载安装 ubuntu系统上的包管理器是 apt centos系统上的包管理器 yum 注:…...

Redis实现分布式锁源码分析
为什么使用分布式锁 单机环境并发时,使用synchronized或lock接口可以保证线程安全,但它们是jvm层面的锁,分布式环境并发时,100个并发的线程可能来自10个服务节点,那就是跨jvm了。 简单分布式锁实现 SETNX 格式&…...
SCI 图像处理期刊
引用 一区 1. IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE 顶刊:是 出版商:IEEE 2. IEEE Transactions on Multimedia 顶刊:是 出版商:IEEE 3. Information Fusion 顶刊:是 出版商:ELSEVIER 4.IEEE TRANSACTIONS ON IMAGE PROCESSING 顶刊:是 出版商:I…...

数据结构-红黑树
1.容器 容器用于容纳元素集合,并对元素集合进行管理和维护. 传统意义上的管理和维护就是:增,删,改,查. 我们分析每种类型容器时,主要分析其增,删,改ÿ…...

双指针、bfs与图论
1238. 日志统计 - AcWing题库 import java.util.*;class PII implements Comparable<PII>{int x, y;public PII(int x, int y){this.x x;this.y y;}public int compareTo(PII o){return Integer.compare(x, o.x);} }public class Main{static int N 100010, D, K;st…...

RabbitMQ高级-高级特性
1.消息可靠性传递 在使用RabbitMQ的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ为我们提供了两种方式来控制消息的投递可靠性模式 1.confirm 确认模式 确认模式是由exchange决定的 2.return 退回模式 回退模式是由routing…...

Word粘贴时出现“运行时错误53,文件未找到:MathPage.WLL“的解决方案
在安装完MathType后,打开word复制粘贴时报错“运行时错误53,文件未找到:MathPage.WLL” 首先确定自己电脑的位数(这里默认32位) 右击MathType桌面图标,点击“打开文件所在位置”, 然后分别找到MathPage.W…...
html元素基本使用
前言 大家好,我是jiantaoyab,第一次学习前端的html,写一篇笔记总结常用的元素 语义化 例如只要是 不管字体的大小是怎么样,有没有加粗都是标题,元素显示到页面中的效果应该由css决定,这就是语义化。 文…...

PHP+golang开源办公系统CRM管理系统
基于ThinkPHP6 Layui MySQL的企业办公系统。集成系统设置、人事管理、消息管理、审批管理、日常办公、客户管理、合同管理、项目管理、财务管理、电销接口集成、在线签章等模块。系统简约,易于功能扩展,方便二次开发。 服务器运行环境要求 PHP > 7.…...
smartmontools-5.43交叉编译Smartctl
嵌入式系统的sata盘经常故障,需要使用smatctl工具监控和诊断sata故障。 1. 从网上下载开源smartmontools-5.43包。 2. 修改makefile进行交叉编译。 由于软件包中已经包含Makefile.am,Makefile.in。直接运行 automake --add-missing 生成Makefile。 3.…...

idea找不到或无法加载主类
前言 今天在运行项目的时候突然出了这样一个错误:IDEA 错误 找不到或无法加载主类,相信只要是用过IDEA的朋友都 遇到过它吧,但是每次遇到都是一顿焦头烂额、抓耳挠腮、急赤白咧!咋整呢?听我给你吹~ 瞧我这张嘴~ 问题报错 找不…...

2.二进制的方式读写文件
文章目录 写入文件代码运行结果 读出文件代码运行结果 文件打开模式标记(查表) 写入文件 ------写文件一共五步:------ 第一步:包含头文件 第二步:创建流对象 第三步:指定方式打开文件 第四步:…...
Seata的详细解释
什么是seata Seata(Simple Extensible Autonomous Transaction Architecture)是一个开源的分布式事务解决方案。它是由阿里巴巴集团开发的,旨在解决分布式系统中的事务一致性问题。 Seata提供了一种简单易用的方式来实现跨多个数据库和服务的…...
JS手写实现洋葱圈模型
解释洋葱圈模型: 当我们执行第一个中间件时,首先输出1,然后调用next(),那么此时它会等第二个中间件执行完毕才会继续执行第一个中间件。然后执行第二个中间件,输出3,调用next(),执行第三中间件…...

3.Windows下安装MongoDB和Compass教程
Windows下安装MongoDB 总体体验下来,,要比MySQL的安装简单了许多,没有过多的配置,直接就上手了! 1、下载 进入官方的下载页面https://www.mongodb.com/try/download/community,如下选择,我选…...
go反射实战
文章目录 demo1 数据类型判断demo2 打印任意类型数据 demo1 数据类型判断 使用reflect.TypeOf()方法打印go中数据类型,可参考go官方API文档;使用格式化参数%T也能打印数据类型。 package mainimport "fmt" import "reflect" import "io&…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...