Qt 5.14.2 学习记录 —— 십이 QLineEdit、QTextEdit

server/2025/1/17 3:30:05/

文章目录

  • 1、QLineEdit
    • 1、写程序
    • 2、正则表达式检查电话号码
    • 3、验证两次输入的密码是否一致
    • 4、切换显示密码状态
  • 2、TextEdit
    • 1、多行编写
    • 2、信号


1、QLineEdit

在这里插入图片描述
text在代码上改变或者界面上直接改动都会修改这个属性。

在这里插入图片描述
clearButtonEnabled,输入框为空,没有显示内容;输入时,右侧出现一个删除按钮,一点击就可以把输入内容清空。

在这里插入图片描述

1、写程序

在这里插入图片描述

在这里插入图片描述

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->lineEdit_name->setPlaceholderText("请输入姓名");ui->lineEdit_name->setClearButtonEnabled(true);ui->lineEdit_pw->setPlaceholderText("请输入密码");ui->lineEdit_pw->setClearButtonEnabled(true);ui->lineEdit_pw->setEchoMode(QLineEdit::Password);ui->lineEdit_phone->setPlaceholderText("请输入电话号码");ui->lineEdit_phone->setClearButtonEnabled(true);// 0代表数字, 字符串固定了输入格式ui->lineEdit_phone->setInputMask("000-0000-0000");
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_submit_clicked()
{QString gender = ui->radioButton_female->isChecked() ? "女" : "男";qDebug() << "姓名: " << ui->lineEdit_name->text()<< "密码: " << ui->lineEdit_pw->text()<< "性别: " << gender<< "电话: " << ui->lineEdit_phone->text();
}

2、正则表达式检查电话号码

电话号码的格式用inputMask来固定,但用正则表达式更好,也通用。

#include <QRegExpValidator>// 注册验证器// ^表示以后面的一个内容为开头; \d表示数字, \\不被转义; $表示结尾QRegExp regExp("^1\\d{10}$");ui->lineEdit_phone->setValidator(new QRegExpValidator(regExp));

接着转到这个框的槽函数textChanged或者textEdited,要写执行逻辑

void Widget::on_lineEdit_phone_textChanged(const QString &arg1)
{QString phone = arg1;int pos = 0;if (ui->lineEdit_phone->validator()->validate(phone, pos) == QValidator::Acceptable)ui->pushButton_submit->setEnabled(true);elseui->pushButton_submit->setEnabled(false);
}

ui->lineEdit_phone->validator()获得之前设定好的正则表达式,调用validate方法去验证是否等于QValidator::Acceptable,也就是可接受的。通过那么提交按钮就可用,不通过就不可用。validate两个参数,一个是用于检查的QString& 参数,另一个是int& 参数,表示如果不符合规则,返回从哪个位置开始不符合规则。

3、验证两次输入的密码是否一致

在这里插入图片描述

// 先在构造函数里设定一下初始值
ui->label->setText("密码为空");// widget.h
public:Widget(QWidget *parent = nullptr);~Widget();void compare();// widget.cpp
void Widget::compare()
{const QString& s1 = ui->lineEdit_pw_1->text();const QString& s2 = ui->lineEdit_pw_2->text();if (s1.isEmpty() && s2.isEmpty())ui->label->setText("密码为空");else if (s1 == s2)ui->label->setText("两次输入的密码一致");elseui->label->setText("两次输入的密码不一致");
}void Widget::on_lineEdit_pw_2_textEdited(const QString &arg1)
{// (void) 消除警告(void) arg1;this->compare();
}void Widget::on_lineEdit_pw_1_textEdited(const QString &arg1)
{(void) arg1;this->compare();
}

4、切换显示密码状态

在这里插入图片描述

ui->checkBox->setText("显示密码");void Widget::on_checkBox_toggled(bool checked)
{// true就显示密码, false隐藏密码if (checked){ui->lineEdit_pw_1->setEchoMode(QLineEdit::Normal);ui->lineEdit_pw_2->setEchoMode(QLineEdit::Normal);}else{ui->lineEdit_pw_1->setEchoMode(QLineEdit::Password);ui->lineEdit_pw_2->setEchoMode(QLineEdit::Password);}
}

toggled在状态发生变化时触发。

2、TextEdit

多行输入框,和PlainTextEdit的区别是,PTE只能显示纯文本Plain Text,TE则可以显示Plain Text,html,markdown等。

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

1、多行编写

在这里插入图片描述

转到下面Text Edit的textChanged槽函数

void Widget::on_textEdit_textChanged()
{const QString& text = ui->textEdit->toPlainText();ui->label->setText(text);
}

2、信号

void Widget::on_textEdit_textChanged()
{const QString& text = ui->textEdit->toPlainText();ui->label->setText(text);qDebug() << "textChanged: " << ui->textEdit->toPlainText();
}void Widget::on_textEdit_selectionChanged()
{QTextCursor cursor = ui->textEdit->textCursor();qDebug() << "selectionChanged: " << cursor.selectedText();
}void Widget::on_textEdit_cursorPositionChanged()
{QTextCursor cursor = ui->textEdit->textCursor();qDebug() << "cursorPositionChange: " << cursor.position();
}void Widget::on_textEdit_undoAvailable(bool b)
{qDebug() << "undoAvailable: " << b;
}void Widget::on_textEdit_redoAvailable(bool b)
{qDebug() << "redoAvailable: " << b;
}void Widget::on_textEdit_copyAvailable(bool b)
{qDebug() << "copyAvailabl: " << b;
}

关于undo和redo信号,ctrl + z时undo为false,redo为true;ctrl + y时undo为true,redo为false。

结束。


http://www.ppmy.cn/server/158985.html

相关文章

【跟着官网学技术系列之MySQL】第7天之创建和使用数据库1

前言 在当今信息爆炸的时代&#xff0c;拥有信息检索的能力很重要。 作为一名软件工程师&#xff0c;遇到问题&#xff0c;你会怎么办&#xff1f;带着问题去搜索引擎寻找答案&#xff1f;亦或是去技术官网&#xff0c;技术社区去寻找&#xff1f; 根据个人经验&#xff0c;一…

图解Git——分支管理《Pro Git》

分支管理 1. 常用分支管理命令 列出所有分支&#xff1a;git branch 当前检出的分支前会标记一个 *。 查看分支最后一次提交&#xff1a;git branch -v查看已合并到当前分支的分支&#xff1a;git branch merge 可以用来确认哪些分支已经合并&#xff0c;可以安全删除。 查…

【Go】Go Gorm 详解

1. 概念 Gorm 官网&#xff1a;https://gorm.io/zh_CN/docs/ Gorm&#xff1a;The fantastic ORM library for Golang aims to be developer friendly&#xff0c;这是官网的介绍&#xff0c;简单来说 Gorm 就是一款高性能的 Golang ORM 库&#xff0c;便于开发人员提高效率 那…

JAVA实战开源项目:课程智能组卷系统(Vue+SpringBoot) 附源码

本文项目编号 T 009 &#xff0c;文末自助获取源码 \color{red}{T009&#xff0c;文末自助获取源码} T009&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 老…

精通Python (10)

一&#xff0c;基于tkinter模块的GUI GUI是图形用户界面的缩写&#xff0c;图形化的用户界面对使用过计算机的人来说应该都不陌生&#xff0c;在此也无需进行赘述。Python默认的GUI开发模块是tkinter&#xff08;在Python 3以前的版本中名为Tkinter&#xff09;&#xff0c;从这…

win10电脑 定时关机

win10电脑 定时关机 https://weibo.com/ttarticle/p/show?id2309405110707766296723 二、使用任务计划程序设置定时关机打开任务计划程序&#xff1a; 按下“Win S”组合键&#xff0c;打开搜索框。 在搜索框中输入“任务计划程序”&#xff0c;然后点击搜索结果中的“任务…

LeetCode1909 删除一个元素使数组严格递增

判断删除一个元素后数组是否可变为严格递增 一、问题描述 在编程中&#xff0c;我们有时会遇到这样一个有趣的问题&#xff1a;给定一个下标从 0 开始的整数数组 nums&#xff0c;我们需要判断是否恰好删除一个元素后&#xff0c;该数组可以变成严格递增的&#xff0c;或者如…

微信小程序在使用页面栈保存页面信息时,如何避免数据丢失?

微信小程序在使用页面栈保存页面信息时避免数据丢失的方法&#xff1a; 一、使用全局变量存储关键数据&#xff1a; 定义一个全局变量&#xff0c;例如在 app.js 中&#xff0c;用于存储页面的重要信息。在页面的 onHide 或 onUnload 生命周期中&#xff0c;将需要保存的数据…