【Qt】--常用控件(输入类控件)

一、QLineEdit

QLineEdit ⽤来表⽰单⾏输⼊框。可以输⼊⼀段⽂本,但是不能换⾏。

其有如下核心属性:

对于输入框,用户在这个输入框进行输入的时候也会造成这个控件是text变化。

通过代码也可以将text进行改变。

然后就是inputMask,就比如我们对于一些输入可以限定其格式,就i比如说我们设置年龄的时候,年--月--日

然后maxLength,就是设置输入框中的最大能输入的长度。

然后echoMode,其可以设置我们的输入框如何显示用户输入的内容,然后还可以设置一些符号来代替用户的输入来显示,就比如我们输入密码一般就是一个黑色的圆。

就是Normal模式,然后隐藏模式:Password,还有一个模式就是不回显,不过实际上不建议设置为不回显。

然后当我们的输入框,用户没有进行输入的时候,我们还可以在输入框中设置一个提示用户输入的内容的信息:placeHolderText.

然后最后一个属性就是在用户输入后,是否在尾部显示出一个按钮,这个按钮会实现一键清除输入框的内容。

然后其有如下核心信号:

下面我们实现一个简单的个人信息录入系统:

第一个输入框为用户输入姓名,第二个输入框给用户输入密码,第三部分我们选择两个排他选择按钮,选择性别我,然后第四个部分我们设置一个输入框给用户输入电话号码。

下面我们来对这其进行初始化操作,首先就是对于输入的数据,我们的输入框,提供一键清除的操作,然后在用户没有输入数据的时候,那么提示用户要输入啥内容。

对于密码那部分,我们将其进行隐藏处理。

初始化如下:

下面我们可以再设置一个提交按钮,在提交的时候,我们将其输入的信息打印出来看看:

然后我们发现,上面的输入中,我们的电话其实是有一个固定格式的,那么我们可以在这个输入框对于输入的验证,输入框中提供的inputMask可以针对输入框的内容进行简单校验。

然后在QLineEdit中还提供了功能更强的校验方式

那么就需要使用到正则表达式了,那么这个概念,当我们需要的时候再去查看文档即可。

正则表达式本质上就是一个带有特殊字符的字符串,特殊字符用来表示另一个字符串的特征,此时就可以使用其来表示一些具有特点的字符串。

下面我们就对电话这个输入框来进行限制,那么首先我们的电话都是1开头的,然后是是十一位数字组成的。

下面我们直接演示一下:

此处我们的规则就是只有当输入的电话满足我们指定的格式才把提交按钮设置为可用。

那个QRegExp就是一个正则表达式对象,那么其构造的内容的意义:

^1就表示开始必须为1,然后\\d实际上是\d,其表示整型数字,然后{10}就表示前面的内容要出现10次。

然后我们再设置一下QLineEdit的textEdited信号的槽函数:

那么就可以实现当满足了这个格式后,我们的提交按钮就被禁用状态设置为可用状态。

二、TextEdit

QTextEdit 表⽰多⾏输⼊框.也是⼀个富⽂本&markdown编辑器。 并且能在内容超出编辑框范围时⾃动提供滚动条.

其有如下属性:

其有如下信号:

三、Combo Box

这个控件表示下拉框。

其核心属性如下:

有如下核心方法:

下面我们通过代码来看其效果:

我们可以通过下拉框的方式来实现一个点餐功能:

首先这是我们的页面的初始化。

然后我们设置一下确定按钮的槽函数,将用户的选择打印出来看看:

对于这个选择的数据,我们也可以直接在文本框中进行设置,也可以通过网络或者文件来进行设置,下面我们演示一下从文件中进行设置:

不过要注意的是,虽然在根本来说std::string和Qstring都是字符串,但是其内部还是存在一些差异,所以其二者之间不能直接进行传参,所以我们要将其进行转换一下,那么在Qtstring中可以使用fromStdString来将其进行转换。

Qt中也提供了QFile实现读写⽂件的功能。当然使⽤C++标准库的std::fstream也是完全可 以的。之所以存在两套,是因为Qt诞⽣较早(1991年左右),此时C++还没有完成"标准化"的⼯作,C++标准库这样的概念⾃然也没有诞⽣。因此Qt就⾃⼰打造了⼀套库,实现了字符串,容器,⽂件操作,多线程,⽹络操作,定时器,正则 表达式等内容。

然后如果文件的内容被改变了,需要程序重新启动才会进行刷新。

四、Spin Box

使⽤QSpinBox 或者QDoubleSpinBox 表⽰"微调框",它是带有按钮的输⼊框。可以⽤来输⼊整 数/浮点数。通过点击按钮来修改数值⼤⼩。

二者的图示如下:

其有如下属性:

有如下核心信号:

下面我们还是可以模仿一个麦当劳的点餐,那么此处我们还可以添加一个数量的操作:

如上,我们给下拉框添加选项,然后对于数量,我们给其添加一个下限和上限。

五、Date Edit & Time Edit

使⽤QDateEdit 作为⽇期的微调框:

使⽤QTimeEdit 作为时间的微调框

使⽤QDateTimeEdit 作为时间⽇期的微调框

这三个控件的使用方式都很接近,所以我们只需要对一个控件熟悉,那么另外两个也一样的。

关于本地时间(LocalTime)和协调世界时(UTC)UTC时间是⼀个基于原⼦钟的标准时间。不受地球的⾃转周期影响。和格林威治时间(GMT)是 ⾮常接近的。科学家会通过精密的设备来测量并维 护。 咱们的计算机内部使⽤的时间就是基于UTC时间。本地时间则是基于不同的时区,对UTC时间做出了⼀些调整。⽐如咱们使⽤的北京时间,位于 "东⼋区",就需要在UTC时间基础上+8个⼩时的时差。

其有如下信号:

下面我们通过代码来感受一下:

我们实现一个日期计算器,就是计算两个日期之间隔了多久。

在界⾯上创建两个QDateTimeEdit 和⼀个按钮,⼀个label QDateTimeEdit 的objectName 为dateTimeEdit_old 和dateTimeEdit_new

基础界面如上。

编写计算按钮的slot函数 :

使⽤daysTo 函数可以计算两个⽇期的天数

使⽤secsTo 函数可以计算两个时间的秒数

通过(秒数 / 3600) 换算成⼩时数,再余上24得到零⼏个⼩时。

使⽤QString::number 把整数转成QString 进⾏拼接。

六、Dial

使⽤QDial 表⽰⼀个旋钮。有些程序,通过⿏标拖动旋钮旋转,即可完成⼀些相关的设置。

其有如下核心属性:

主要的槽函数如下:

下面我们通过代码来操作一下:

我们设置一个旋转按钮,然后这个这个按钮,使得我们窗口的透明度进行变化:

基本框架如上所示。

七、QSlider

这个控件是实现一个滑动条

其有如下属性:

QSlider 和QDial 都是继承⾃QAbstractSlider ,因此⽤法上基本相同

其有如下属性:

然后有如下信号:

下面我们通过代码来理解其操作:

我们创建两个滑动条,一个水平滑动条,一个垂直滑动条,然后我们通过这个水平滑动条可以改变窗口的宽度,然后垂直滑动条可以改变窗口的高度。

然后我们对这两个滑动条进行初始化:

然后通过其槽函数,触发挪动,然后使得窗口进行变化:

然后我们还可以通过设置快捷键的方式,通过键盘来实现:

要设置快捷键,那么我们要使用QShortcut*类,然后通过信号和槽绑定。

相关推荐
qq_401700411 小时前
Qt无边框窗体移动详解
qt
David猪大卫1 小时前
【C++修炼】异常
开发语言·c++·经验分享·笔记·学习·考研·面试
玖玥拾1 小时前
Lua 基础语法(六)xLua Lua 调用 C# 交互
开发语言·unity·c#·lua
Joolun商城源码_Java1 小时前
Java 商城技术栈怎么选:单体、微服务还是前后端分离多端?
java·开发语言·微服务
charlie1145141911 小时前
浅谈C++的列表初始化std::initializer_list
开发语言·数据结构·c++·list·开源项目
拒绝内耗。1 小时前
一个请求进入 Java 应用后,怎么找到我们写的方法?
java·开发语言
励志不掉头发的内向程序员2 小时前
【LibreCAD 2D架构】RS_Line创建之后发生了什么?从图形容器到屏幕渲染
开发语言·c++·qt·学习·系统架构
夕除2 小时前
redis--013
java·开发语言
object not found2 小时前
Nuxt4去掉body中默认的边距
开发语言·后端·rust