Qt6.5类库详解:QLineEdit

哈喽大家好,我是20YC小二!欢迎关注(20YC编程),现在有免费《C++程序员》视频教程下载哦!

~下面开始今天的分享内容~


1. QLineEdit介绍

QLineEdit是一个单行文本编辑器,允许用户输入和编辑纯文本。它提供了许多有用的编辑功能,如撤销和重做、剪切和粘贴、拖放等。

  • QLineEdit的主要功能和特点:

  • 轻量级:QLineEdit是一个轻量级的控件,占用的系统资源较少,可以轻松地集成到各种应用程序中。
  • 易用性:QLineEdit的使用方法简单明了,对于开发人员来说,可以很容易地将其添加到应用程序中并对其进行配置。
  • 支持各种输入模式:QLineEdit可以根据不同的回显模式显示不同的输入内容,例如密码模式或隐藏输入模式,这增加了其在处理敏感信息时的安全性。
  • 输入限制和验证:通过设置输入掩码和验证器,QLineEdit可以限制用户输入的内容类型,并进行有效性检查,这有助于确保用户输入的数据符合预期的格式和要求。
  • 可交互性:QLineEdit支持添加动作和清除按钮,这增加了用户与输入框的交互性,使用户能够更方便地操作输入框。
  • 外观可定制:通过设置字体、样式表等属性,QLineEdit的外观可以进行定制,以适应不同的应用程序风格和用户需求。
  • 事件响应:QLineEdit可以使用信号和槽机制来响应用户的输入事件,例如文本改变、编辑完成等,这使得开发人员能够在用户输入时执行相应的操作或触发其他事件。
  • 其他特性:QLineEdit也允许开发者自定义输入框的一些特性,比如可以设置输入框的只读属性,防止用户随意修改其中的内容;也可以设置光标的位置和选中文字的起始位置等

QLineEdit具有轻量级、易用性、支持各种输入模式、输入限制和验证、可交互性、外观可定制以及事件响应等特点,适用于各种需要用户输入单行文本的应用场景。

  • 如何使用QLineEdit:

头文件:#include <QLineEdit>

cmake:find_package(Qt6 REQUIRED COMPONENTS Widgets)

              target_link_libraries(mytarget PRIVATE Qt6::Widgets)

qmake:QT += widgets

继承于:QWidget

2. QLineEdit默认风格显示例子

#include <QLineEdit>
QLineEdit * p_line_edit1 = new QLineEdit(this);
p_line_edit1->setGeometry(15, 15, 200, 32);
p_line_edit1->setPlaceholderText("帐号");
QLineEdit * p_line_edit2 = new QLineEdit(this);
p_line_edit2->setGeometry(15, 55, 200, 32);
p_line_edit2->setPlaceholderText("密码");

3. QLineEdit主要信号

// 当显示文本改变时,发射该信号。
void textChanged(const QString &text)
// 当编辑文本时,发射该信号。
void textEdited(const QString &text)
// 当光标移动(位置改变)时,发射该信号。
void cursorPositionChanged(int oldPos, int newPos)
// 当按下(Return)返回键或(Enter)回车键时,发射该信号。
void returnPressed()
// 当按下(Return)返回键或(Enter)回车键,或输入框失去焦点时,发射该信号。
void editingFinished()
// 当选择文本改变时,发射该信号。
void selectionChanged()
// 当输入的按键不被文本框接受时,发射该信号。
void inputRejected()

4. QLineEdit常用属性

  • text文本:

// 访问函数
QString text() const
void setText(const QString &text)
  • displayText显示文本:

根据echoMode响应模式返回不同字符

如QLineEdit::Normal返回text内容,QLineEdit::NoEcho返回空字符串,QLineEdit::Password返回 "********"。

// 访问函数
QString displayText() const
  • echoMode回应模式:

QLineEdit的echoMode属性用来决定输入的内容如何显示。

QLineEdit::EchoMode宏有以下四个取值:

QLineEdit::Normal 0 正常模式,输入什么就显示什么。(默认)

QLineEdit::NoEcho 1 无回显模式,输入的字符不会被显示出来。

QLineEdit::Password 2 密码模式,不显示实际输入的字符,而是以小圆圈代替,这样别人就无法看到输入的字符。

QLineEdit::PasswordEchoOnEdit 3 密码回显模式,当编辑框处于编辑状态时,会显示密码字符。

// 访问函数
QLineEdit::EchoMode echoMode() const
void setEchoMode(QLineEdit::EchoMode mode)/**** 例子 ****/
p_line_edit->setEchoMode(QLineEdit::Password);

  • placeholderText占位符文本:

占位符文本一般用于在用户未输入任何内容时显示一些提示信息。

// 访问函数
QString placeholderText() const
void setPlaceholderText(const QString &text)/**** 例子: ****/
p_line_edit->setPlaceholderText("请输入用户帐号");

  • maxLength最大输入长度:

默认最大长度 32767。

// 访问函数
int maxLength() const
void setMaxLength(int)/**** 例子 ****/
p_line_edit->setMaxLength(32);
  • isClearButtonEnabled是否启用清空按钮:

true:启用清空按钮,表示当输入框text内容不为空时,在输入框右边是否显示一个清空按钮。默认为 false。

// 访问函数
void setClearButtonEnabled(bool enable)
bool isClearButtonEnabled() const/**** 例子 ****/
p_line_edit->setClearButtonEnabled(true);

  • isReadOnly是否只读模式:

// 访问函数;默认 false。
bool isReadOnly() const
void setReadOnly(bool b)/**** 例子 ****/
p_line_edit->setReadOnly(true);
  • alignment文本对齐方式:

很多控件都具有对齐特性,例如QLabel、QLineEdit、QPushButton等控件。

// 访问函数:默认Qt::AlignLeft|Qt::AlignVCenter靠左垂直居中
Qt::Alignment alignment() const
void setAlignment(Qt::Alignment)/**** 例子:设置靠右垂直居中对齐 ****
p_line_edit->setAlignment(Qt::AlignRight|Qt::AlignVCenter);

  • textMargins文本边缘:

用于设置文本到边框四个边缘的距离。分别是left左边、top上边、right右边、bottom下边。

// 访问函数
void setTextMargins(int left, int top, int right, int botom)
void setTextMargins(const QMargins &margins)
void getTextMargins(int *left, int *top, int *right, int *bottom) const
QMargins textMargins() const/**** 例子:设置左边间隔15 ****/
p_line_edit->setTextMargins(15, 0, 0, 0);

  • isModified是否文本被修改:

// 访问函数
bool isModified() const
void setModified(bool b)
  • isUndoAvailable是否允许撤销:

// 访问函数
bool isUndoAvailable() const
  • isRedoAvailable是否允许重做:

// 访问函数
bool isRedoAvailable() const
  • dragEnabled是否允许拖拽选择文本:

true:表示可以将文本框的选择文本,拖拽移动到文本框其他位置上。

默认 false 不允许拖拽。

// 访问函数
void setDragEnabled(bool b)
bool dragEnabled() const

5. QLineEdit内置右键菜单

  • 默认右键菜单功能截图:

6. QLineEdit光标操作管理

  • 光标位置函数:
// 返回当前光标位置。默认 0
int cursorPosition() const
// 设置当前光标位置。
void setCursorPosition(int cursorPos)
// 根据 QPoint(x, y) 计算光标位置。
int cursorPositionAt(const QPoint &pos)
  • 光标移动函数:

mark==true:表示移动字符会加到选择文本。

mark==false:表示会取消选择文本。

// 光标前移 steps 个字符。
void cursorForward(bool mark, int steps = 1)
// 光标后移 steps 个字符。
void cursorBackward(bool mark, int steps = 1)
// 光标前移 1 个词。
void cursorWordForward(bool mark)
// 光标后移 1 个词。
void cursorWordBackward(bool mark)
// 光标移到文本开头。
void home(bool mark)
// 光标移到文本末尾。
void end(bool mark)
  • 光标回格和删除函数:

回格:删除光标前面字符。

删除:删除光标后面字符。

// 在光标处回格。
void backspace()
// 在光标处删除。
void del()

7. QLineEdit选择文本函数

  • 选择文本函数:
// 选择全部文本。
void selectAll()
// 选择指定文本。
void setSelection(int start, int length)
// 返回选择文本。
QString selectedText() const
// 返回选择文本第一个字符位置。
int selectionStart() const
// 返回选择文本最后字符位置。
int selectionEnd() const
// 返回选择文本长度。
int selectionLength() const
  • 取消选择函数:
// 取消选择。
void deselect()

8. QLineEdit剪贴板操作函数

// 剪切选择文本到剪贴板。
void cut()
// 复制选择文本到剪贴板。
void copy() const
// 插入剪贴板文本内容到当前光标位置,同时删除选择文本。
void paste()

9. QLineEdit快捷操作函数

// 清空文本。
void clear()
// 撤销上一次文本操作。
void undo()
// 重做上一次文本操作。
void redo()
// 插入newText到当前光标位置,同时删除选择文本。
void insert(const QString &newText)

10. QLineEdit输入限制验证器

QLineEdit的setValidator()函数用于设置输入框的验证器,用于限制和检查用户的输入。验证器是一个实现了QValidator接口的对象,它可以定义一组规则来验证用户输入的数据是否符合要求。

用户在输入数据时,验证器将根据定义的规则对用户输入进行验证。如果输入数据不符合规则,验证器将拒绝接受输入,从而限制用户在输入框中输入无效数据。

// 访问函数
void setValidator(const QValidator *)
const QValidator * validator() const
  • 限制输入整数例子:
#include <QLineEdit>
#include <QLabel>
#include <QIntValidator>QLineEdit * p_line_edit = new QLineEdit(this);// 创建一个整数验证器,限制输入为0到99之间的整数
QIntValidator *validator = new QIntValidator(0, 99, p_line_edit);
// 将验证器设置为QLineEdit的验证器
p_line_edit->setValidator(validator);
  • 限制输入浮点数例子:
#include <QLineEdit>
#include <QLabel>
#include <QDoubleValidator>QLineEdit * p_line_edit = new QLineEdit(this);// 创建一个浮点数验证器,限制输入为0.0到9999.99之间的浮点数,精度为小数点后2位
QDoubleValidator *validator = new QDoubleValidator(0, 9999.99, 2, p_line_edit);
validator->setNotation(QDoubleValidator::StandardNotation);
// 将验证器设置为QLineEdit的验证器
p_line_edit->setValidator(validator);

11. QLineEdit完整示例

  • 创建各种显示风格、和各种属性效果输入框控件;
  • 演示限制整数输入、限制浮点数输入;
  • 连接QLineEdit文本改变信号等功能。

  • .h 头文件源码:

#ifndef LINE_EDIT_DEMO_DIALOG_H
#define LINE_EDIT_DEMO_DIALOG_H
#include <QDialog>
#include <QLineEdit>class line_edit_demo_dialog : public QDialog
{Q_OBJECTpublic:line_edit_demo_dialog(QWidget *parent = nullptr);~line_edit_demo_dialog();private slots:void slotTextChanged(const QString &text);private:QLineEdit * m_pLineEdit1 = nullptr;QLineEdit * m_pLineEdit2 = nullptr;QLineEdit * m_pLineEdit3 = nullptr;QLineEdit * m_pLineEdit4 = nullptr;QLineEdit * m_pLineEdit5 = nullptr;QLineEdit * m_pLineEdit6 = nullptr;QLineEdit * m_pLineEdit7 = nullptr;QLineEdit * m_pLineEdit8 = nullptr;QLineEdit * m_pLineEdit9 = nullptr;};
#endif // LINE_EDIT_DEMO_DIALOG_H
  • .cpp 源文件源码:

#include "line_edit_demo_dialog.h"
#include <QLabel>
#include <QIntValidator>
#include <QDoubleValidator>line_edit_demo_dialog::line_edit_demo_dialog(QWidget *parent): QDialog(parent)
{this->setWindowTitle("20YC编程社区");this->resize(720, 420);// 启用清空文本按钮m_pLineEdit1 = new QLineEdit(this);m_pLineEdit1->setGeometry(15, 15, 200, 32);m_pLineEdit1->setPlaceholderText("请输入用户帐号");m_pLineEdit1->setClearButtonEnabled(true);// 密码回应模式m_pLineEdit2 = new QLineEdit(this);m_pLineEdit2->setGeometry(15, 55, 200, 32);m_pLineEdit2->setPlaceholderText("密码");m_pLineEdit2->setEchoMode(QLineEdit::Password);// 限制输入整数QLabel * p_label1 = new QLabel("限制输入整数:", this);p_label1->setGeometry(240, 15, 120, 32);m_pLineEdit3 = new QLineEdit(this);m_pLineEdit3->setGeometry(240, 55, 120, 32);// 创建一个整数验证器,限制输入为0到99之间的整数QIntValidator *validator1 = new QIntValidator(0, 99, m_pLineEdit3);// 将验证器设置为QLineEdit的验证器m_pLineEdit3->setValidator(validator1);// 限制输入浮点数QLabel * p_label2 = new QLabel("限制输入浮点数:", this);p_label2->setGeometry(380, 15, 120, 32);m_pLineEdit4 = new QLineEdit(this);m_pLineEdit4->setGeometry(380, 55, 120, 32);// 创建一个浮点数验证器,限制输入为0.0到9999.99之间的浮点数,精度为小数点后2位QDoubleValidator *validator2 = new QDoubleValidator(0, 9999.99, 2, m_pLineEdit4);validator2->setNotation(QDoubleValidator::StandardNotation);// 将验证器设置为QLineEdit的验证器m_pLineEdit4->setValidator(validator2);// 右边显示文本m_pLineEdit5 = new QLineEdit(this);m_pLineEdit5->setGeometry(15, 100, 200, 32);m_pLineEdit5->setPlaceholderText("右边显示文本");m_pLineEdit5->setAlignment(Qt::AlignRight|Qt::AlignVCenter);// 左边间隔15像素m_pLineEdit6 = new QLineEdit(this);m_pLineEdit6->setGeometry(15, 140, 200, 32);m_pLineEdit6->setPlaceholderText("左边间隔15像素");m_pLineEdit6->setTextMargins(15, 0, 0, 0);// 文本和背景颜色m_pLineEdit7 = new QLineEdit(this);m_pLineEdit7->setGeometry(240, 100, 200, 32);m_pLineEdit7->setPlaceholderText("文本和背景颜色");m_pLineEdit7->setAlignment(Qt::AlignCenter|Qt::AlignVCenter);m_pLineEdit7->setStyleSheet("QLineEdit{color: rgb(255, 0, 0);  background-color:rgb(0, 255, 0);}");// 圆角边框颜色、背景透明m_pLineEdit8 = new QLineEdit(this);m_pLineEdit8->setGeometry(240, 140, 200, 32);m_pLineEdit8->setPlaceholderText("圆角边框颜色、背景透明");m_pLineEdit8->setAlignment(Qt::AlignCenter|Qt::AlignVCenter);m_pLineEdit8->setStyleSheet("QLineEdit{background-color: transparent; border: 1px solid rgb(0, 0, 255); border-radius: 4px;}");// 文本改变自动同步QLineEdit * p_line_edit9 = new QLineEdit(this);p_line_edit9->setGeometry(15, 180, 480, 32);p_line_edit9->setMaxLength(1024);p_line_edit9->setPlaceholderText("输入文本,自动同步到其他QLineEdit控件");connect(p_line_edit9, &QLineEdit::textChanged, this, &line_edit_demo_dialog::slotTextChanged);
}line_edit_demo_dialog::~line_edit_demo_dialog()
{
}void line_edit_demo_dialog::slotTextChanged(const QString &text)
{m_pLineEdit1->setText(text);m_pLineEdit2->setText(text);m_pLineEdit3->setText(text);m_pLineEdit4->setText(text);m_pLineEdit5->setText(text);m_pLineEdit6->setText(text);m_pLineEdit7->setText(text);m_pLineEdit8->setText(text);
}

-【End】-

喜欢本文章,记得点赞、分享、关注哦~

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

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

相关文章

SSH的交互原理(wireshark的分析)

SSH的交换原理&#xff08;wireshark篇&#xff09; 首先要想了解ssh的交换原理&#xff0c;必须要先了解他的加密方式&#xff0c;他的加密方式是对称加密&#xff0c;和公钥加密。什么意思呢&#xff1f; 首先我们向服务器发送一个请求&#xff0c;然后服务器会发给我们他的…

GitBook安装及使用——使用 Markdown 创建你自己的博客网站和电子书

目录 前言一、依赖环境二、gitbook安装使用1.安装 gitbook-cli2.安装 gitbook3.Gitbook初始化4.创建你的文章5.修改 SUMMARY.md 和 README.md6.编译生成静态网页7.运行以便在浏览器预览8.运行效果 前言 GitBook是一个命令行工具&#xff0c;用于使用 Markdown 构建漂亮的博客网…

【鉴权】JWT加密

目录 定义 官网 定义 JWT是JSON Web Token的缩写&#xff0c;是RFC7519规范。该规范目的是为了让客户端和服务端可靠的传递信息。 官网 JSON Web Tokens - jwt.io JWT是由三个部分组成&#xff0c;HMACSHA256( base64UrlEncode(header) "." base64UrlEncode(pa…

AWS 知识二:AWS同一个VPC下的ubuntu实例通过ldapsearch命令查询目录用户信息

前言&#xff1a; 前提&#xff1a;需要完成我的AWS 知识一创建一个成功运行的目录。 主要两个重要&#xff1a;1.本地windows如何通过SSH的方式连接到Ubuntu实例 2.ldapsearch命令的构成 一 &#xff0c;启动一个新的Ubuntu实例 1.创建一个ubuntu实例 具体创建实例步骤我就不…

vue el-date-picker中datetime类型对今天之后的日期包含时分禁用

vue el-date-picker中datetime类型对今天之后的日期包含时分禁用 目前对选择秒那一列未禁用 <template><div><el-date-pickerv-model"deactivateTime"type"datetime"format"yyyy-MM-dd HH:mm:ss"value-format"yyyy-MM-dd HH…

抖音直播间websocket礼物和弹幕消息推送可能出现重复的情况,解决办法

在抖音直播间里&#xff0c;通过websocket收到的礼物消息数据格式如下&#xff1a; {common: {method: WebcastGiftMessage,msgId: 7283420150152942632,roomId: 7283413007005207308,createTime: 1695803662805,isShowMsg: True,describe: 莎***:送给主播 1个入团卡,priority…

HarmonyOS4.0从零开始的开发教程17给您的应用添加通知

HarmonyOS&#xff08;十五&#xff09;给您的应用添加通知 通知介绍 通知旨在让用户以合适的方式及时获得有用的新消息&#xff0c;帮助用户高效地处理任务。应用可以通过通知接口发送通知消息&#xff0c;用户可以通过通知栏查看通知内容&#xff0c;也可以点击通知来打开应…

管理类联考——数学——真题篇——按题型分类——充分性判断题——蒙猜A/B

老规矩&#xff0c;看目录&#xff0c;平均3-5题 文章目录 A/B2023真题&#xff08;2023-19&#xff09;-A-选项特点&#xff1a;两个等号&#xff1b;-纯蒙猜-哪个长选哪个【不要用这招&#xff0c;因为两个选项&#xff0c;总会有一个长的&#xff0c;那不就大多都是A/B&…

透视数据:数据可视化工具的多重场景应用

数据可视化工具已经成为了许多领域中的重要利器&#xff0c;它们在各种场景下发挥着重要作用。下面我就以可视化从业者的角度简单谈谈数据可视化工具在不同场景下的应用&#xff1a; 企业数据分析与决策支持 在企业层面&#xff0c;数据可视化工具被广泛应用于数据分析和决策…

16 v-model绑定多选框

概述 使用v-model绑定多选框也是一种比较常见的需求&#xff0c;比如一个用户可以绑定多个角色&#xff0c;可以有多个兴趣爱好。 在本节课中&#xff0c;我们来学习一下这两种用法。 基本用法 我们创建src/components/Demo16.vue&#xff0c;在这个组件中&#xff0c;我们…

SpringCloud02

1.在项目中&#xff0c;服务之间的调用是怎么实现的&#xff1f; 1.1基于RestTemplate和LoadBalanced注解&#xff1a; RestTemplate是Spring提供的用于访问RESTful服务的客户端。添加LoadBalanced注解后&#xff0c;RestTemplate会成为一个负载均衡的HTTP客户端&#xff0c;它…

10.鸿蒙应用程序app创建第一个程序Helloworld

鸿蒙应用程序开发app_hap开发环境搭建 1.打开DevEco 2.创建项目 3.选择Empty Ability 4. 选择API6,支持java开发 5.点击Finish 6.启动本地模拟器参考方法 7.启动成功 8.运行程序 9.运行成功 其它文章点击专栏

HarmonyOS:Neural Network Runtime对接AI推理框架开发指导

场景介绍 Neural Network Runtime 作为 AI 推理引擎和加速芯片的桥梁&#xff0c;为 AI 推理引擎提供精简的 Native 接口&#xff0c;满足推理引擎通过加速芯片执行端到端推理的需求。 本文以图 1 展示的 Add 单算子模型为例&#xff0c;介绍 Neural Network Runtime 的开发流…

轻量封装WebGPU渲染系统示例<50>- Json数据描述材质等3D渲染场景信息

本示例中的3d渲染场景由Json数据来描述。 包含3个主要部分: 1. Json描述渲染器的基本信息。 2. Json描述渲染场景的环境信息,包括全局的灯光、阴影、雾等。 3. Json描述构成场景的各个可选人实体&#xff0c;包括几何信息、transform、材质、渲染状态等。 当前示例源码git…

开启创意之旅:免费、开源的噪波贴图(noise texture)生成网站——noisecreater.com详细介绍

在当今数字创意领域&#xff0c;噪波贴图&#xff08;Noise Texture&#xff09;是游戏渲染、游戏开发、美术设计以及影视制作等行业不可或缺的艺术素材之一。为了满足广大创作者的需求&#xff0c;noisecreater.com应运而生&#xff0c;成为一款免费、开源的噪波贴图生成工具。…

保护IP地址免受盗用的有效方法

IP地址是互联网通信的基础&#xff0c;然而&#xff0c;由于其重要性&#xff0c;IP地址的盗用成为一种潜在的网络威胁。本文将深入探讨防止IP地址被盗用的方法&#xff0c;以维护网络的安全性。 第一部分&#xff1a;IP地址盗用的威胁与风险 1.1 IP地址盗用的定义 IP地址盗…

数据可视化---离群值展示

内容导航 类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统…

操作系统系列:Unix进程系统调用fork,wait,exec

操作系统系列&#xff1a;Unix进程系统调用 fork系统调用fork()运用的小练习 wait系统调用Zombiesexec 系列系统调用 开发者可以查看创建新进程的系统调用&#xff0c;这个模块会讨论与进程相关的Unix系统调用&#xff0c;下一个模块会讨论Win32 APIs相关的进程。 fork系统调用…

java参数校验

引入依赖 <!--参数效验--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency><!--Length参数效验--><dependency><groupId>org.hib…

【python基础】-- yarn add 添加依赖的各种类型

目录 1、安装 yarn 1.1 使用npm安装 1.2 查看版本 1.3 yarn 淘宝源配置 2、安装命令说明 2.1 yarn add&#xff08;会更新package.json和yarn.lock&#xff09; 2.2 yarn install 2.3 一些操作 2.3.1 发布包 2.3.2 移除一个包 2.3.3 更新一个依赖 2.3.4 运行脚本 …