【QT】常用控件(三)

在这里插入图片描述

个人主页~

常用控件(一)~
常用控件(二)~


QT中其他线程是改变不了GUI上的内容的,只有主线程可以

常用控件

  • 四、显示类控件
    • 2、LCD Number
    • 3、ProgressBar
    • 4、Calendar Widget
  • 五、输入类控件
    • 1、Line Edit
      • 正则表达式
    • 2、Text Edit
    • 3、Combo Box

四、显示类控件

2、LCD Number

QLCDNumber专门用来显示数字

属性说明
intValue显示数字值(int)
value显示数字值(double)
digitCount显示几位数字
mode数字显示形式
segmentStyle设置显示风格

我们来写一个倒计时小程序,其中,QTimer就是一个定时器,通过start启动定时器,通过stop关闭定时器,开启定时器后,每隔一定的周期(自己设置的)触发一次timeout信号,通过connect把该信号与我们自定义的槽函数updateTime相关联后,让槽函数改变LCDNumber的显示值,倒计时就写好了

LCDNumber

digitCount就直接括号里跟数字表示显示几位数字
mode有二进制、八进制、十进制、十六进制四种模式
segmentStyle有Flat、Outline、Filled三种风格

3、ProgressBar

属性说明
minimum进度条最小值
maximum进度条最大值
value进度条当前值
alignment文本在进度条中的对齐方式
textVisible进度条的数字是否可见
orientation进度条的方向是水平还是垂直
invertAppearance是否向反方向增长进度
textDirection文本的朝向
format展示的数字格式

写一个类似于上面倒计时的程序,每过100ms进度条增加1,也是通过timeout来作为信号,槽函数为进度条增长

progressbar

format展示的数字格式分别为进度百分比%p、进度数值%v、剩余时间%m、总时间%t

4、Calendar Widget

属性说明
selectDate当前选中的日期
minimumDate最小日期
maximumDate最大日期
firstDayOfWeek设置每周的第一天为周几
gridVisible是否显示表格的边框
selectionMode是否允许选择日期
navigationBarVisible日历上方标题是否显示
horizontalHeaderFormat日历上方标题显示的日期格式
verticalHeaderFormat日历第一列显示的内容格式
dateEditEnable是否允许日期被编辑

calendar

五、输入类控件

1、Line Edit

QLineEdit用来表示单行输入框,可以输入文本但不能换行

属性说明
text输入框中的文本
inputMask输入内容格式约束
maxLength最大长度
frame是否添加边框
echoMode显示方式
cursorPosition光标所在位置
alignment文字对齐方式
dragEnabled是否允许拖拽
readOnly是否只读
placeholderText当输入框内容为空时显示设置的提示信息
clearButtonEnabled是否会自动显示清除内容按钮

这里说一下echoMode,一共有三种模式,Normal、Password、NoEcho
Normal:默认, 显示输入的文本
Password:输入的字符会被隐藏为黑点
NoEcho:不会显示任何输入的字符

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->lineEdit->setClearButtonEnabled(true);ui->lineEdit->setPlaceholderText("请输入您的昵称");ui->lineEdit_2->setClearButtonEnabled(true);ui->lineEdit_2->setPlaceholderText("请输入账号");ui->lineEdit_2->setInputMask("000-000-0000");//设置账号限制输入的个数以及分隔符,只能为10位,三位四位之间,六位七位之间有一个-分隔//InputMask只能进行简单的校验,实际开放中我们使用正则表达式ui->lineEdit_3->setClearButtonEnabled(true);ui->lineEdit_3->setPlaceholderText("请输入密码");ui->lineEdit_3->setEchoMode(QLineEdit::Password);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{qDebug() << "昵称:"<<ui->lineEdit->text()<< "账号:"<<ui->lineEdit_2->text()<< "密码:"<<ui->lineEdit_3->text();
}//所有的qDebug都可以与网络相结合,这样我们是将内容发送到窗口中,通过网络我们可以将内容发送到服务器上同时进行一系列的处理

正则表达式

微软正则表达式文档~

测正则表达式是否有效的网站~

#include "widget.h"
#include "ui_widget.h"
#include <QRegExpValidator>
#include <QDebug>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->pushButton->setEnabled(false);ui->lineEdit->setValidator(new QRegExpValidator(QRegExp("^1\\d{10}$")));//QRegExpValidator创建一个验证器对象,里面是匿名对象QRegExp
}Widget::~Widget()
{delete ui;
}void Widget::on_lineEdit_textEdited(const QString &arg1)//arg1是当前输入框的内容
{QString con = arg1;int pos = 0;if(ui->lineEdit->validator()->validate(con,pos) == QValidator::Acceptable)//validate的返回值有两个,一个是QValidator::Acceptable通过,一个是QValidator::Invalid不通过//validate的参数就是从con中从pos位置开始是否能够验证通过{ui->pushButton->setEnabled(true);}else{ui->pushButton->setEnabled(false);}
}void Widget::on_pushButton_clicked()
{qDebug() << "密码输入完成";
}

我来解释一下程序中出现的正则表达式

^:这个符号位于正则表达式的开始位置,表示匹配行的开始,在这里,它确保了我们正在检查的字符串是从头开始匹配的,而不是从字符串的中间或末尾开始

1:这个字符直接出现在正则表达式中,表示匹配字符串中的字符“1”,这意味着任何被这个正则表达式匹配的字符串都必须以数字1开头

\d:这部分稍微复杂一些。在正则表达式中,\d 是一个特殊的字符类,用于匹配任何一个数字字符(0-9)。但是,在大多数编程语言中,字符串中的反斜杠(\)是一个转义字符,用于表示特殊字符或字符类,因此,为了在字符串中表示\d这个正则表达式模式,我们需要对反斜杠本身进行转义,即使用两个反斜杠(\),所以,\d 在字符串中表示的是正则表达式中的 \d,用于匹配任何一个数字字符

{10}:这是一个量词,用于指定前面的字符类(在这个例子中是\d,即任何一个数字字符)应该出现的次数,{10} 表示前面的字符类应该恰好出现10次,因此,\d{10} 表示匹配连续的10个数字字符

$:这个符号位于正则表达式的末尾,表示匹配行的结束,在这里,它确保了我们正在检查的字符串是在末尾结束匹配的,也就是说,整个字符串必须完全匹配正则表达式定义的模式,不能有多余的字符

lineedit_2

2、Text Edit

属性说明
markdown输入框内容支持markdown格式
html输入框内容支持大部分html标签
placeHolderText输入框为空时提示的内容
readOnly是否只读
undoRedoEnable是否开启撤销undo和反撤销redo功能
autoFormating开启自动格式化
tabstopWidth每次缩进占多少空间
overwriteMode是否开启覆写模式
acceptRichText是否接收富文本内容
verticalScrollBarPolicy垂直方向滚动条的设置
horizontalScrollBarPolicy水平方向滚动条的设置
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_textEdit_textChanged()
{const QString& con = ui->textEdit->toPlainText();ui->label->setText(con);qDebug() << "textChanged:" << con;
}void Widget::on_textEdit_copyAvailable(bool b)
{qDebug() << "copyAvailable:" << b;
}void Widget::on_textEdit_undoAvailable(bool b)
{qDebug() << "undoAvailable:" << b;
}void Widget::on_textEdit_redoAvailable(bool b)
{qDebug() << "redoAvailable:" << b;
}void Widget::on_textEdit_cursorPositionChanged()
{const QTextCursor& cursor = ui->textEdit->textCursor();//QTextCursor是QTestEdit包含的一个对象,通过这个对象可以获取到当前光标位置和选中的内容qDebug() << "cursorPositionChanged:" << cursor.position();
}void Widget::on_textEdit_selectionChanged()
{const QTextCursor& cursor = ui->textEdit->textCursor();qDebug() << "selectionChanged:" << cursor.selectedText();
}

视频中分别展示了文本的改变,光标的移动,以及撤销和反撤销操作的打印

textedit

3、Combo Box

属性说明
currentText当前选中的文本
currenIndex当前选中条目的下标
editable是否允许修改
inconSize下拉框图标的大小
maxCount最多允许有多少个条目

对于普通的添加条目,我们直接additem然后加上名字就可以了,但有时候我们需要添加很多条目,就需要从文件中导入

#include <fstream>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);std::ifstream file("d:/config.txt");//打开文件configstd::string line;//定义一个line存放读取的某一行的内容while(std::getline(file,line))//getline一行一行的读取{ui->comboBox->addItem(QString::fromStdString(line));//使用fromStdString将std::string转换为QString,每一行都添加到comboBox中}file.close();}

在这里插入图片描述


今日分享就到这里了~

在这里插入图片描述

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

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

相关文章

【数据处理】大数据入门

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;软件开发必备知识_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…

UE小:UE5的Pixelstreaming在捕获画面的时候没办法显示非Viewport的Slate区域按钮的ToolTip

原始代码 首先&#xff0c;让我们看看原始代码片段&#xff1a; // Some widgets might want to provide an alternative Tooltip Handler. if (bCanSpawnNewTooltip || !NewTooltip) {TSharedPtr<SWidget> NewTooltipWidget NewTooltip ? NewTooltip->AsWidget()…

[含文档+PPT+源码等]精品基于springboot实现的原生微信小程序小区兼职系统

基于Spring Boot实现的原生微信小程序小区兼职系统背景&#xff0c;可以从以下几个方面进行阐述&#xff1a; 一、技术背景 移动互联网的普及&#xff1a;随着移动互联网的快速发展&#xff0c;微信小程序作为一种轻量级应用&#xff0c;因其无需下载安装、即用即走的特点&am…

【Next.js 项目实战系列】02-创建 Issue

原文链接 CSDN 的排版/样式可能有问题&#xff0c;去我的博客查看原文系列吧&#xff0c;觉得有用的话&#xff0c;给我的库点个star&#xff0c;关注一下吧 上一篇【Next.js 项目实战系列】01-创建项目 创建 Issue 配置 MySQL 与 Prisma​ 在数据库中可以找到相关内容&…

Greenhills学习总结

学习背景&#xff1a;近期参与xx项目过程中&#xff0c;遇到较多的关于代码集成编译的知识盲区&#xff0c;因此需要进行相关知识的学习和扫盲。 参考资料&#xff1a;GreenHills2017.7编译手册:本手册是GreenHills 2017.7.14版编译器的软件使用手册。该手册详细介绍了GreenHi…

数学中的直觉、联想和抽象漫谈

数学中的直觉、联想和抽象漫谈 直觉、联想和抽象不是孤立存在的&#xff0c;而是相互交织、共同作用的。构成了我们认知理解世界的不可或缺的三种能力。我们应该重视并培养这些思维能力&#xff0c;以更好地适应不断变化的世界。 在数学的世界里&#xff0c;直觉、联想和抽象是…

【每日一题】24.10.14 - 24.10.20

10.14 直角三角形1. 题目2. 解题思路3. 代码实现&#xff08;AC_Code&#xff09; 10.15 回文判定1. 题目2. 解题思路3. 代码实现&#xff08;AC_Code&#xff09; 10.16 二次方程1. 题目2. 解题思路3. 代码实现&#xff08;AC_Code&#xff09; 10.17 互质1. 题目2. 解题思路3…

UE5 gameplay学习1 蓝图修改材质和参数

第一种是直接修改这个材质&#xff0c;比较朴素 这个对象直接Set Material这个很直观就设置了 如果要设置材质的属性&#xff0c;就有一点奇怪了&#xff0c;通常来说get到material就能设置了&#xff0c;这里需要如下操作 create一个dynamic material instance 然后还要指定…

[JAVAEE] 线程安全问题

目录 一. 什么是线程安全 二. 线程安全问题产生的原因 三. 线程安全问题的解决 3.1 解决修改操作不是原子性的问题 > 加锁 a. 什么是锁 b. 没有加锁时 c. 加锁时 d. 死锁 e. 避免死锁 3.2 解决内存可见性的问题 > volatile关键字 (易变的, 善变的) a. 不加…

搭建Golang gRPC环境:protoc、protoc-gen-go 和 protoc-gen-go-grpc 工具安装教程

参考文章&#xff1a; 安装protoc、protoc-gen-go、protoc-gen-go-grpc-CSDN博客 一、简单介绍 本文开发环境&#xff0c;均为 windows 环境&#xff0c;mac 环境其实也类似 ~ ① 编译proto文件&#xff0c;相关插件 简单介绍&#xff1a; protoc 是编译器&#xff0c;用于将…

AUTOSAR_EXP_ARAComAPI的5章笔记(17)

☞返回总目录 相关总结&#xff1a;AutoSar AP CM通信组总结 5.7 通信组 5.7.1 目标 通信组&#xff08;Communication Group&#xff0c;CG&#xff09;是由 AUTOSAR 定义的复合服务模板。它提供了一个通信框架&#xff0c;允许在 AUTOSAR 应用程序之间以对等方式和广播模…

AMBA-CHI协议详解(十)

AMBA-CHI协议详解&#xff08;一&#xff09;- Introduction AMBA-CHI协议详解&#xff08;二&#xff09;- Channel fields / Read transactions AMBA-CHI协议详解&#xff08;三&#xff09;- Write transactions AMBA-CHI协议详解&#xff08;四&#xff09;- Other transac…

【设计模式系列】抽象工厂模式

一、什么是抽象工厂模式 抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一个接口&#xff0c;用于创建一系列相关或相互依赖的对象&#xff0c;而无需指定它们具体的类。这种模式允许客户端使用抽象的接口来创建一组…

一小时快速入门Android GPU Inspector

本文介绍如何使用 Android GPU Inspector (AGI) 对Android 应用进行系统性能分析和帧性能分析 。面向熟悉Android图形的开发者。 待分析应用需要的前置条件 (1) 将应用设置为可调试状态 <application [...] android:debuggable"true">&#xff08;2&#xff09…

LabVIEW水质监测系统

在面对全球性的海洋污染问题时&#xff0c;利用先进技术进行水质监测成为了保护海洋环境的关键手段之一。开发了一种基于LabVIEW的海洋浮标水质监测系统&#xff0c;该系统能够实时监测并评估近海水域的水质状况&#xff0c;旨在为海洋保护和污染防治提供科技支持。 项目背景 …

svn-拉取与更新代码

右键项目文件 进行更新与提交代码&#xff0c;提交代码选择更改的文件以及填写commit

电子部授课1

今天下午有院科协的授课&#xff0c;涉及电赛知识&#xff0c;单片机环境构建和模拟方向讲解。感觉要学知识还是很多呜呜呜 这是电赛讲解&#xff0c;主要是五个方面&#xff0c;有一个讲太快了没有听清哈哈哈 后面是全程搜概念的模拟&#xff0c;真的有很多知识不太明白 慌乱…

Java项目-基于springboot框架的会员制医疗预约服务管理信息系统项目实战(附源码+文档)

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…

云曦10月13日awd复现

一、防御 1、改用户密码 passwd <user> 2、改数据库密码 进入数据库 mysql -uroot -proot 改密码 update mysql.user set passwordpassword(新密码) where userroot; 查看用户信息密码 select host,user,password from mysql.user; 改配置文件&#xff0c;将密码改为自己…

Quartus Ⅱ仿真 1.半加器

真服了&#xff0c;csdn上一搜全是收费&#xff0c;服啦服啦&#xff0c;我就自己来写一个吧 仿真波形&#xff1a; 输出结果&#xff1a; 介绍&#xff1a; 半加器&#xff08;Half Adder&#xff09;是数字电路中的一种基本组件&#xff0c;用于实现两个一位二进制数的加…