代码编织梦想

目录

QLineEdit

基本功能和用法 

核心信号

核心信号

示例

槽函数

 优化:使用正则表达式

验证器 

槽函数

验证密码 

切换显示密码 

 QTextEdit

 核心属性

示例

 验证信号

QComBox

主要特点和用法:

核心属性

核心方法 

核心信号 

示例

 识取文件

 QSpinBox

示例

 QDateEdit&QTimeEdit

示例

 实现日期计算器

 QDial

示例


 

QLineEdit

表示单行输入,输入一段文本,但是不能换行;

用于接收用户输入的文本信息。

基本功能和用法 

属性作用
text输入框的文本
inputMask输入内容格式的约束
echoMode

显示方式:

QLineEdit::Normal:默认值,文本框显示输入的文本;

QLineEdit::password:密码模式,输入的字符会被隐藏;

                                  通常用 * 或 = 替代隐藏;

QtLineEdit::Noecho:该模式,文本框输入后不会显示输入字符

placeHolderText当输入框为空时,显示提示信息
clearButtonEnabled是否自动显示出"清除按钮",一键清除文本框的内容

核心信号

属性说明
void editingFinished()按回车键时发出此信号
void returnPressed()
当按下回车键时发出此信号 如果设置了验证器,必须要验证通过,才能触发
void selectionChanged()当选中的文本改变时,发出此信号。

void textChanged(const QString &text)
QLineEdit中的文本改变时,发出此信号,text是新的文本。 代码对文本的修改能够触发这个信号
void textEdited(const QString &text))当QLineEdit中的文本改变时,发出此信号,text是新的文本。 代码对文本的修改不能触发这个信号
void cursorPositionChanged(int old,int new)当鼠标移动时发出此信号,old为先前的位置,new为新位置

核心信号

信号说明
textChanged()文本内容改变时触发
selectionChanged()选中范围改变时触发
cursorPositionChanged()光标移动时触发
undoAvailable(bool)可以进行undo操作时触发
redoAvailable(bool)可以进行redo操作时触发
copyAvailable(bool)文本被选中/取消选中时触发

示例

按照下图在Qt Designer中创建,依作用命名

 对LineEdit输入框为空时,显示输入提示信息

    //当输入框为空时,显示提示信息
    ui->lineEdit_name->setPlaceholderText("请输入名字");
    ui->lineEdit_password->setPlaceholderText("请输入密码");
//    ui->lineEdit_phone->setPlaceholderText("请输入电话");

密码会显示出现,设置隐藏密码文本框 

   //输入密码,遮蔽隐藏
    ui->lineEdit_password->setEchoMode(QLineEdit::Password);

 

添加一键清除按钮,快捷所需操作,

同时添加对密码文本框限制输入格式,按照电话344格式设置;

    //清除按钮
    ui->lineEdit_name->setClearButtonEnabled(true);
    ui->lineEdit_password->setClearButtonEnabled(true);
    ui->lineEdit_phone->setClearButtonEnabled(true);

    //限制输入格式
   ui->lineEdit_phone->setInputMask("000-0000-0000");

槽函数

对PushButton按钮对象添加槽函数,在输入各种信息完毕后,打印text;

void Widget::on_pushButton_clicked()
{
    //按钮槽函数,显示打印QLineEdit->text

    QString gender = ui->radioButton_male->isChecked()?"男":"女";
    qDebug()<<"姓名: "<<ui->lineEdit_name->text()
           <<"密码: "<<ui->lineEdit_password->text()
          <<"性别: "<<gender
          <<"电话是: "<<ui->lineEdit_phone->text();

//    if(ui->radioButton_male->isChecked())
//    {
//        qDebug()<<"性别: "<<ui->radioButton_male->text();
//    }
//    else
//    {
//        qDebug()<<"性别: "<<ui->radioButton_female->text();
//    }
}

 优化:使用正则表达式

要求输入框输入一个合法的电话号码(1开头,11位,全部为数字),如果验证不通过,按钮无法点击

验证器 

验证器(Validator)是一种用于确保用户输入数据符合特定格式或规则的组件;

例如:

        一个整数验证器可以确保用户输入的是有效的整数Qt提供了几种内置的验证器,

比如QIntValidatorQDoubleValidatorQRegExpValidator(正则表达式验证器)等,它们可以用于不同的数据类型和验证需求。

1.创建一个文本框和按钮:

        给输入框添加验证器,将按钮默认设置 setEnabled(fasle)禁用状态;

 2.添加验证器:

        QRegExp:创建一个正则表达式对象, "^1//d{10}$";

使用QRegExpValidator 创建一个验证器对象:

        通过传递一个正则表达式对象给 QRegExpValidator 的构造函数来创建一个验证器

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

    //将按钮默认设置是为false
    ui->pushButton->setEnabled(false);

    QRegExp regExp("^1\\d{10}$");
    ui->lineEdit->setValidator(new QRegExpValidator(regExp));
    
    //也可以用 匿名对象方式一键式创建validator
   // ui->lineEdit->setValidator(new QRegExpValidator(QRegExp("^1//d{10}$")));
}

槽函数

QLineEdit添加信号与槽函数,当文本改变时,触发该信号

 通过 validate ⽅法验证⽂本是否符合要求,

第⼀个参数填写的是要验证的字符串,参数要求是QString,

第二个参数是 当字符串不匹配时,返回不匹配字符的位置

void Widget::on_lineEdit_textEdited(const QString &arg1)
{
    //当文本改变时,触发此信号
              //注 此信号:代码对文本改变不会触发该信号
    //arg1 参数  是当前输入框的内容
    QString text = arg1;
    //表示位置
    int pos = 0;

    //获取文本框的验证器,检查里面的文本是否符合要求       返回值是一个枚举    QValidator::Acceptable 表示通过 QValidator::Invalid 表示不通过
   // ui->lineEdit->validator()->validate(text,pos);

    if(ui->lineEdit->validator()->validate(text,pos) == QValidator::Acceptable)
    {
        //验证通过,将按钮设为启动
        ui->pushButton->setEnabled(true);
    }
    else
    {
        ui->pushButton->setEnabled(false);
    }
}

验证密码 

输入两次密码,检查是否一致;

三种情况: 密码为空,密码一致,密码不同

为两个单行输入框添加各自的槽函数,当文本改变时就自动触发信号让对应槽函数进行检查

void Widget::on_lineEdit_textEdited(const QString &arg1)
{
    //获取两个文本框的text
    const QString& s1  = ui->lineEdit->text();
    const  QString& s2  = ui->lineEdit_2->text();
   //判断是否为空
   if(s1.isEmpty() &&s2.isEmpty())
   {
       ui->label->setText("密码为空");
   }

   //判断是否一致
   else if(s1==s2)
   {
       ui->label->setText("密码一致");
   }
   else
   {
       ui->label->setText("密码不相同");
   }
}

void Widget::on_lineEdit_2_textEdited(const QString &arg1)
{
    //获取两个文本框的text
  const QString& s1  = ui->lineEdit->text();
  const  QString& s2  = ui->lineEdit_2->text();

   //判断是否为空
   if(s1.isEmpty() &&s2.isEmpty())
   {
       ui->label->setText("密码为空");
   }

   //判断是否一致
   else if(s1==s2)
   {
       ui->label->setText("密码一致");
   }
   else
   {
       ui->label->setText("密码不相同");
   }
}

切换显示密码 

 输入密码,不仅编译器要检查是否一致,用户也要显示查看是否输入错误或查看输入的密码;

创建一个checkBox复选框,和单行输入框 

 

checkBox添加 toggled槽函数;

注意:clicked(bool)现阶段差别不大,booltoggled的相似

 

 QTextEdit

是一个多行输入框,支持富文本markdown编辑器,

能够在内容超出编辑框时自动提供滚动条

 核心属性

属性作用
markdown输入框内的内容。支持markdown格式。能够自动的对markdown文本进行 渲染成html
html输入框内的内容。支持大部分html标签
placeHolderText输入框为空时提示的内容
readonly是否只读
undoRedoEnable

是否开启undo/redo功能

  • 按下ctrl+z触发undo
  • 按下ctrl+y触发redo
autoFormatting开启自动格式化
tabstopWidth按下缩进占多少空间
overwriteMode是否开启覆盖写模式
acceptRichText是否接收富文本内容
verticalScrollBarPolicy

垂直方向滚动条的出现策略 Qt::ScrollBarAsNeeded:根据内容自动决定是否需要滚动条。这是默认值。

Qt::ScrollBarAlwaysOff:总是关闭滚动条。

Qt::ScrollBarAlwaysOn:总是显示滚动条。

horizontalScrollBarPolicy水平方向滚动条的出现策略
Qt::ScrollBarAsNeeded:根据内容自动决定是否需要滚动条。这是默认值。
Qt::ScrollBarAlwaysOff:总是关闭滚动条。
Qt::ScrollBarAlwaysOn:总是显示滚动条。

示例

创建一个多行输入框,和label。当输入框内容改变时,label同步跟新

 

添加TextEdit的槽函数,当文本改变时触发textChanged信号;

注:这里的获取文本不是平常的text(),而是toPlainText();

void Widget::on_textEdit_textChanged()
{
    //当文本改变时,触发该函数,改变label
    //label->setText(const QString&) 
    const QString& s  = ui->textEdit->toPlainText();
    qDebug()<<s;
    ui->label->setText(s);
}

 验证信号

void Widget::on_textEdit_copyAvailable(bool b)
{
    //文本被选中/取消选中时触发
    qDebug()<<"[copyAvailable]: "<<b;
}

void Widget::on_textEdit_cursorPositionChanged()
{
    //光标移动时触发
   //qDebug()<<"[cursorPositionChanged]";

    //          获取鼠标光标的位置
 qDebug()<<"[cursorPositionChanged]: "<< ui->textEdit->textCursor().position();

//   const QTextCursor& cursor = ui->textEdit->textCursor();
//   qDebug()<<"[cursorPositionChanged]: "<<cursor.position();
}

void Widget::on_textEdit_redoAvailable(bool b)
{
    //可以进⾏redo操作时触发
        //当撤回操作时,触发 为true

    qDebug()<<"[redoAvailable]: "<<b;
}

void Widget::on_textEdit_selectionChanged()
{
    //选中范围改变时触发
    const QTextCursor& cursor = ui->textEdit->textCursor();

    qDebug()<<"[selectionChanged]: "<<cursor.selectedText();

}

void Widget::on_textEdit_textChanged()
{
    //⽂本内容改变时触发

    qDebug()<<"[textChanged]: "<<ui->textEdit->toPlainText();
}

void Widget::on_textEdit_undoAvailable(bool b)
{
    qDebug()<<"[undoAvailable]: "<<b;
}

QComBox

 是一个组合框部件,从预定义的选项列表中选择一个选项。通常以下拉列表框的形式呈现,用户可以点击下拉箭头展开选项列表,并从中选择一个选项。

主要特点和用法:

  • 选项列表:QComboBox 可以包含多个选项,这些选项可以是文本、图标或者自定义的 QWidget。
  • 样式:可以通过样式表(StyleSheet)来自定义 QComboBox 的外观,如更改背景颜色、字体样式等。

 

核心属性

属性说明
currentText当前选中的文本
currentIndex当前选中的条目下标.从0开始计算,如果当前没有条目被选中 值为-1
editable是否允许修改,设为true时,QComboBox和QLineEdit很像,同样也可以设置validator0
iconSize下拉框图标的大小
maxCount最多允许有多少个条目

核心方法 

方法说明
addItem(const QString&)增加一个条目
currentIndex()获取当前条目的下标,从0开始计算,如果当前没有条目被选中,值为-1
currentText()获取当前条目的文本内容

示例

创建下拉框,通过按钮输出下拉框选择的条目内容

给下拉框增加内容,使用addItem() 

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

    ui->comboBox->addItem("江苏省图书馆");
    ui->comboBox->addItem("湖北省图书馆");
    ui->comboBox->addItem("重庆市图书馆");

    ui->comboBox_2->addItem("自习室");
    ui->comboBox_2->addItem("阅读室");
    ui->comboBox_2->addItem("电脑室");

    ui->comboBox_3->addItem("沙发四人座");
    ui->comboBox_3->addItem("电脑单人座");
    ui->comboBox_3->addItem("双人座");
}

 

PushButton添加clicked槽函数,输出下拉框选择的条目text 

void Widget::on_pushButton_clicked()
{
    //对应鼠标点击槽函数
    qDebug()<<ui->comboBox->currentText()
            <<ui->comboBox_2->currentText()
            <<ui->comboBox_3->currentText() ;
}

 

 识取文件

创建一个.txt文件,在里面输入我们想要的下拉框内容,通过打开文件读取内容输入到ComBox下拉框中

{
    ui->setupUi(this);

    //打开文件          //文件路径
    std::ifstream file("D:\\gitee\\qt\\QComBox2\\QComBox.txt");
    std::string line;
    //循环获取文件内容 以行获取
    while(std::getline(file,line))
    {
                   //QString提供的方法 将String转换成QString
      ui->comboBox->addItem(QString::fromStdString(line));
    }
    //关闭文件
    file.close();
}

 QSpinBox

用于输入整数值的部件,可以通过键盘或者上下箭头按钮增加或减少数字,设置步进值,每次增加或减少的数值量,它常用于需要用户输入整数值的场景

 

示例

模拟写一个麦当劳点餐,可以调整食品份数

 初始化下拉框,微调框

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

    //初始化下拉框
    ui->comboBox->addItem("安格斯牛肉堡");
    ui->comboBox->addItem("麦辣鸡腿堡");
    ui->comboBox->addItem("深海鳕鱼堡");

    ui->comboBox_2->addItem("中薯条");
    ui->comboBox_2->addItem("鸡翅");
    ui->comboBox_2->addItem("鸡米花");

    ui->comboBox_3->addItem("可乐");
    ui->comboBox_3->addItem("雪碧");

    //初始化微调框
    ui->spinBox_1->setValue(1); //设置初始值
    ui->spinBox_1->setRange(1,5);   //设置范围

    ui->spinBox_2->setValue(1); //设置初始值
    ui->spinBox_2->setRange(1,5);   //设置范围

    ui->spinBox_3->setValue(1); //设置初始值
    ui->spinBox_3->setRange(1,5);   //设置范围

}

给提交按钮,添加槽函数,输出下拉框微调框当前内容 

void Widget::on_pushButton_clicked()
{
    qDebug()<<ui->comboBox->currentText()<<":"<<ui->spinBox_1->value()
           <<ui->comboBox_2->currentText()<<":"<<ui->spinBox_2->value()
          <<ui->comboBox_3->currentText()<<":"<<ui->spinBox_3->value();
}

 QDateEdit&QTimeEdit

QDateEdit是日期微调框

 

QTimeEdit是时间微调框

二者合一:QDateTimeEdit是时间日期的微调框

这三个控件用法相似,以QDateTimeEdit为主介绍 

示例

 实现日期计算器

创建两个QDateTimeEdit,计算两个日期的差值,天数,秒数

void Widget::on_pushButton_clicked()
{
    //获取两个时间日期
  QDateTime timeOld = ui->dateTimeEdit->dateTime();
  QDateTime timeNew =  ui->dateTimeEdit_2->dateTime();

  //计算差值
//  int days = timeOld.daysTo(timeNew);
//  int hours = (timeOld.secsTo(timeNew)/3600%24);
//  QString text = QString::number(days)+ QString("天,")+ QString::number(hours)+QString("时.");
//  ui->label->setText(text);

  // 计算日期的差值.
      // int days = timeOld.daysTo(timeNew);    //daysTo 有bug,慎用 用秒转成需要的数据即可
      int seconds = timeOld.secsTo(timeNew);
      //要把秒数换算成小时.
      int hours = (seconds / 3600) % 24;
      int days = (seconds / 3600) / 24;
      // 把计算结果放到 label 中
 QString text  =  QString("有") + QString::number(days) +QString("天") + QString::number(hours) +QString("时") ;
  ui->label->setText(text);
}

 QDial

表示一个旋钮

示例

通过这个按钮来调节窗口不透明度(0~1)

初始化数值 

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


    //设置可以循环旋转
    ui->dial->setWrapping(true);
    //设置刻度线可见
    ui->dial->setNotchesVisible(true);
    //设置最大值为
    ui->dial->setMaximum(100);
    //设置最小值为
    ui->dial->setMinimum(0);
    //设置初始值为
    ui->dial->setValue(100);
}

 添加dial的槽函数,通过value值的改变,触发信号

void Widget::on_dial_valueChanged(int value)
{ 
    // QString::number(value)将整数value转换为字符串
    ui->label->setText(QString("当前不透明度为:")+ QString::number(value));
    
    // 设置窗口的不透明度
    // 将value除以100,得到0到1之间的值,表示不透明度(0完全透明,1完全不透明)
    this->setWindowOpacity((double)value/100);
}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_67367079/article/details/140225248

qlineedit和qtextedit_cg_1915的博客-爱代码爱编程_qlineedit和qtextedit

QLineEdit是单行文本框。     QTextEdit是多行文本框。 (1)单行文本框QLineEdit 常用的方法和属性:   (a)获取和设置文本对齐方式 Qt::Alignment    alignment () const void    setAlignment ( Qt::Alignment flag )   (b)获取和设置文

Qt学习笔记(二十四):QLineEdit 和 QTextEdit 的常用方法-爱代码爱编程

QLineEdit 是一个单行文本编辑框; QTextEdit 是一个多行文本编辑框,还可以进行富文本编辑; QPlainTextEdit 是一个多行纯文本编辑框,相当于简化版的 QTextEdit; 在界面上拉一个 lineEdit 控件,和几个按钮: 代码如下:  #include "widget.h" #include "ui_widg

qt常用部件类_qq_52996157的博客-爱代码爱编程

一、按钮类         1、普通按钮(Push Button) #include <QPushButton> QPushButton *bt_button; //普通按钮 bt_button = new QPushButton("普通按钮"); connect(bt_button, SIGNAL(clicked(bool)), thi

qt学习 控件(二)输入文本类-爱代码爱编程

文章目录 QLineEditQTextEditQTextCursor QLineEdit QLineEdit是最基本的输入控件,继承自QObject ,常用于短行的输入。 构造函数: 可以指定一个默认

【qt控件之qlineedit、qplaintextedit 、qtextedit 、qtextbrowser】使用及区别_qlineedit自动换行-爱代码爱编程

介绍 QLineEdit、QPlainTextEdit、QTextEdit和QTextBrowser都是Qt中用于文本输入和显示的控件,它们之间有一些区别,适用于不同的场景。 下面是对这四个类的简要介绍、区别和使用技巧: