010 Qt_输入类控件(LineEdit、TextEdit、ComboBox、SpinBox、DateTimeEdit、Dial、Slider)

前言

本文将会向你介绍输入类控件:LineEdit、TextEdit、ComboBox、SpinBox、DateTimeEdit、Dial、Slider

一、QLineEdit

1.简介

QLineEdit 用来表示单行输入框. 可以输入一段文本, 但是不能换行.
QLineEdit 具有许多功能,包括自动完成、输入限制、密码模式等。它还可以设置最大长度、光标样式、输入校验等。QLineEdit 可以被嵌入到其他 Qt 小部件中,如对话框、窗口等。
在这里插入图片描述

2.常见属性及说明

属性 说明
text 输⼊框中的⽂本
inputMask 输⼊内容格式约束
maxLength 最⼤⻓度
frame 是否添加边框
echoMode 显⽰⽅式: QLineEdit::Normal :这是默认值,⽂本框会显⽰输⼊的⽂本。 QLineEdit::Password :在这种模式下,输⼊的字符会被隐藏,通常⽤星号(*)或等号(=)代替。QLineEdit::NoEcho :在这种模式下,⽂本框不会显⽰任何输⼊的字符。
cursorPosition 光标所在位置
alignment ⽂字对⻬⽅式, 设置⽔平和垂直⽅向的对⻬.
dragEnabled 是否允许拖拽
readOnly 是否是只读的(不允许修改)
placeHolderText 当输⼊框内容为空的时候, 显⽰什么样的提⽰信息
clearButtonEnabled 是否会⾃动显⽰出 “清除按钮”

3.重要信号及说明

信号 说明
void cursorPositionChanged(int old, int new) 当⿏标移动时发出此信号,old为先前的位置,new为新位置。
void editingFinished() 当按返回或者回⻋键时,或者⾏编辑失去焦点时,发出此信号。
void returnPressed() 当返回或回⻋键按下时发出此信号.如果设置了验证器, 必须要验证通过, 才能触发.
void selectionChanged() 当选中的⽂本改变时,发出此信号。
void textChanged(const QString &text) 当QLineEdit中的⽂本改变时,发出此信号,text是新的⽂本。代码对⽂本的修改能够触发这个信号.
void textEdited(const QString &text)) 当QLineEdit中的⽂本改变时,发出此信号,text是新的⽂本。代码对⽂本的修改不能触发这个信号.

4.示例一:用户登录界面

①在界面上创建三个输入框和两个单选按钮, ⼀个普通按钮
在这里插入图片描述
② 编写widget.cpp文件,初始化输入框的内容,演示inputMask(格式约束)、echoMode(显示方式)、placeHolderText(提示信息)、clearButtonEnabled(清除按钮)等属性

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
   
   
    ui->setupUi(this);

    ui->lineEdit_name->setPlaceholderText("请输入姓名");
    ui->lineEdit_name->setClearButtonEnabled(true); //显示清除按钮

    ui->lineEdit_password->setPlaceholderText("请输入密码");
    ui->lineEdit_password->setClearButtonEnabled(true);
    ui->lineEdit_password->setEchoMode(QLineEdit::Password); //显示方式为密码模式

    ui->lineEdit_phone->setPlaceholderText("请输入电话号码");
    ui->lineEdit_phone->setClearButtonEnabled(true);
    //约束格式:输入11位数,按照3-4-4形式
    ui->lineEdit_phone->setInputMask("000-0000-0000");
}

Widget::~Widget()
{
   
   
    delete ui;
}

void Widget::on_pushButton_clicked()
{
   
   
    QString gender=ui->radioButton_male->isChecked() ? "男" : "女";

    qDebug()<<"姓名:"<<ui->lineEdit_name->text() << "密码:" << ui->lineEdit_password->text()<< "性别: " << gender<< "手机: " << ui->lineEdit_phone->text();
}

5.示例二:验证两次输入的密码是否一致+显示密码

①创建两个LineEdit输入框和⼀个CheckBox复选框以及一个label
在这里插入图片描述

②编写widget.cpp文件,给两个输入框lineEdit添加判断两个密码是否相同逻辑的槽函数,给复选框添加切换显示模式的槽函数——演示void textEdited(const QString &text))信号(当QLineEdit中的⽂本改变时,发出此信号,text是新的⽂本。代码对文本的修改不能触发这个信号)

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
   
   
    ui->setupUi(this);

    ui->lineEdit->setEchoMode(QLineEdit::Password);
    ui->lineEdit_2->setEchoMode(QLineEdit::Password);
    ui->label->setText("密码为空");
}

Widget::~Widget()
{
   
   
    delete ui;
}


void Widget::on_checkBox_toggled(bool checked)
{
   
   
    if(checked){
   
   
        ui->lineEdit->setEchoMode(QLineEdit::Normal);
        ui->lineEdit_2->setEchoMode(QLineEdit::Normal);
    }
    else{
   
   
        ui->lineEdit->setEchoMode(QLineEdit::Password);
        ui->lineEdit_2->setEchoMode(QLineEdit::Password);
    }

}

void Widget::on_lineEdit_textEdited(const QString &arg1)
{
   
   
    (void)arg1; //类型转换,消除编译器未使用到arg1参数的警告
    const QString& s1 = ui->lineEdit->text();
    const QString& s2 = ui->lineEdit_2->text();
    if (s1.isEmpty() && s2.isEmpty())
    {
   
   
        ui->label->setText("密码为空!");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fan_558

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值