当前位置: 首页 > news >正文

Qt:QLineEdit、QTextEdit、QComboBox、QSpinBox、QDateTimeEdit、QDial、QSlider

目录

一、QLineEdit

属性

二、QTextEdit

属性

三、QComboBox

属性

四、QSpinBox

属性

五、QDateTimeEdit

属性

六、QDial

属性

七、QSlider

属性


在上一篇介绍完显示类控件后,本文介绍常见的输入类控件。

一、QLineEdit

QLineEdit表示一个单行输入框,可以输入文本,但是无法换行。

属性

  •  这些属性比较枯燥,还是要看在具体代码中的实现,实现一个程序,来让用户输入个人信息。

    //设置姓名输入框ui->lineEdit_name->setFrame(true);ui->lineEdit_name->setPlaceholderText("请输入姓名");ui->lineEdit_name->setClearButtonEnabled(true);//设置密码输入框ui->lineEdit_password->setFrame(true);ui->lineEdit_password->setPlaceholderText("请输入密码");ui->lineEdit_password->setClearButtonEnabled(true);//设置密码隐藏ui->lineEdit_password->setEchoMode(QLineEdit::Password);//设置性别//设置电话ui->lineEdit_phone->setFrame(true);ui->lineEdit_phone->setPlaceholderText("请输入电话");ui->lineEdit_phone->setClearButtonEnabled(true);//电话有格式限制ui->lineEdit_phone->setInputMask("000-0000-0000");

  • InputMask所提供的限制十分有限,为了更好的约束输入,Qt提供了验证器,此处可以利用正则表达式来验证用户输入的电话号码是否合法,如果不合法,则提交按钮不能启用,如果合法,则可以点击提交按钮。

QRegExp regexp(R"(^1\d{10}$)");
ui->lineEdit_phone->setValidator(new QRegExpValidator(regexp));

^1表示字符串必须以1开头

\d表示数字

{10}表示\d重复10次

$表示结尾

由于这里用了RawString,所以不用对\d转义 

//当输入框中输入内容后,触发信号的槽函数
void Widget::on_lineEdit_phone_textEdited(const QString &arg1)
{//在槽函数中验证输入内容和正则表达式是否匹配成功QString text = arg1;int pos;//第二个参数是输出型参数,当匹配失败的时候,返回从哪个位置开始匹配失败的if(ui->lineEdit_phone->validator()->validate(text,pos) ==QValidator::Acceptable ){ui->pushButton_submit->setEnabled(true);}elseui->pushButton_submit->setEnabled(false);}

  • 编写代码,实现密码输入的二次确认,如果不一致,就显示两次输入密码不一致。

void Widget::Compare()
{QString s1 = ui->lineEdit_password->text();QString s2 = ui->lineEdit_passwordAgain->text();if(s1.isEmpty() && s2.isEmpty()){ui->label_dispaly->setText("您输入的密码为空");return;}if(s1 == s2){ui->label_dispaly->setText("输入的密码一致");}else{ui->label_dispaly->setText("输入的密码不一致");}return;
}
void Widget::on_lineEdit_password_textEdited(const QString &arg1)
{(void)arg1;this->Compare();
}void Widget::on_lineEdit_passwordAgain_textEdited(const QString &arg1)
{(void)arg1;this->Compare();
}

  • 再实现一个功能,切换密码的显示状态,密码默认是隐藏的,可以点击显示按钮来切换。

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

二、QTextEdit

属性

常用信号

  • 获取QTextEdit中的内容

void Widget::on_textEdit_textChanged()
{const QString& content = ui->textEdit->toPlainText();qDebug() << content;
}

  • 验证输入框的信号 

void Widget::on_textEdit_selectionChanged()
{const QTextCursor& cursor = ui->textEdit->textCursor();qDebug() << "[selectionChanged] " << cursor.selectedText();
}

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

三、QComboBox

下拉框

属性

  • 核心方法

  • 核心信号 

  • 给下拉框添加条目 

ui->comboBox->addItem("巨⽆霸");
ui->comboBox->addItem("⻨辣鸡腿堡");ui->comboBox_2->addItem("薯条");
ui->comboBox_2->addItem("⻨辣鸡翅");ui->comboBox_3->addItem("可乐");
ui->comboBox_3->addItem("雪碧");

四、QSpinBox

属性

  • 核心信号 

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

五、QDateTimeEdit

属性

  • 核心信号

  • 获取两个日期直接的差 

//获取到两个时间框的时间⽇期
QDateTime timeOld = ui->dateTimeEdit_old->dateTime();
QDateTime timeNew = ui->dateTimeEdit_new->dateTime();
// 计算⽇期差值
int days = timeOld.daysTo(timeNew);
int hours = (timeOld.secsTo(timeNew) / 3600) % 24;

六、QDial

表示一个旋钮

属性

  • 核心信号

编写程序,拖动旋钮来改变窗口不透明度

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

void Widget::on_dial_valueChanged(int value)
{
ui->label->setText(QString("当前不透明度为: ") + QString::number(value));
this->setWindowOpacity((double)value / 100);
}

七、QSlider

表示一个滑动条。

QSlider和QDial都是继承自QAbstractSlider,用法类似。

属性

 核心信号

  •  编写程序,实现两个滑动条,一个水平、一个垂直,拖动可以改变窗口的大小。

    ui->horizontalSlider->setMinimum(100);ui->horizontalSlider->setMaximum(2000);ui->horizontalSlider->setValue(800);ui->horizontalSlider->setSingleStep(500);ui->verticalSlider->setMinimum(100);ui->verticalSlider->setMaximum(1500);ui->verticalSlider->setValue(600);ui->verticalSlider->setSingleStep(300);

void Widget::on_horizontalSlider_valueChanged(int value)
{QRect rect = this->geometry();this->setGeometry(rect.x(),rect.y(),value,rect.height());
}void Widget::on_verticalSlider_valueChanged(int value)
{QRect rect = this->geometry();this->setGeometry(rect.x(),rect.y(),rect.width(),value);
}

  • 用快捷键增加或减少滑动条的值

void Widget::on_horizontalSlider_valueChanged(int value)
{QString s = QString::number(value);ui->label->setText("当前值为"+s);
}

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QShortcut* shortCut1 = new QShortcut(this);shortCut1->setKey(QKeySequence("-"));QShortcut* shortCut2 = new QShortcut(this);shortCut2->setKey(QKeySequence("="));//按下快捷键,发出信号,执行槽函数connect(shortCut1,&QShortcut::activated,this,&Widget::subValue);connect(shortCut2,&QShortcut::activated,this,&Widget::addValue);}void Widget::addValue()
{int v = ui->horizontalSlider->value();ui->horizontalSlider->setValue(v+5);
}void Widget::subValue()
{int v = ui->horizontalSlider->value();ui->horizontalSlider->setValue(v-5);
}
http://www.dtcms.com/a/271014.html

相关文章:

  • gcc编译器
  • 【macOS】【Swift】不让App采用macOS的外观风格,直接保持白色背景,怎么处理?
  • 静态路由扩展实验
  • 【C++】unordered_set和unordered_map的实现
  • 三、Docker常用命令
  • HUAWEI HiCar6.0的新变化
  • 什么是 AMR 格式?简鹿音频转换器轻松批量转换 AMR 为 MP3
  • windows部署多实例filebeat监控相同路径下文件
  • 前端交互自定义封装类:“双回调自定义信息弹窗”
  • ai之 ubuntu本地安装mineru2.1.0
  • 整合Spring、Spring MVC与MyBatis:构建高效Java Web应用
  • Ubuntu22.04 设置显示存在双屏却无法双屏显示
  • DAS3D: Dual-modality Anomaly Synthesis for 3D Anomaly Detection 论文精读
  • 高通SG882G平台(移远),Ubuntu22编译:1、下载代码
  • 新零售“云化”进化:基于定制开发开源AI智能名片S2B2C商城小程序的探索
  • 中兴通讯首席项目管理专家、PMCoE负责人张宝忠受邀为PMO大会演讲嘉宾
  • redis的命令集合
  • WPF使用WebBrowser 解决href标签target=_blank在浏览器窗口打开新链接而非窗体内部打开的问题
  • Docker高级管理
  • 不深入,则无法共情
  • mysql 可用性的保障机制:主讲主从复制机制
  • Git 详解:从概念,常用命令,版本回退到工作流
  • 【03】MFC入门到精通——MFC 添加控件 设置属性 按钮 文本框
  • 《【第五篇】图片处理自动化:让你的视觉内容更专业!:图片处理基础与批量裁剪》
  • 06每日简报20250709
  • Vue 中mounted 生命周期钩子的执行时机和 v-for 的渲染顺序
  • linux-进程信号的产生与发送
  • 简单易懂的方式聊聊 DDD(领域驱动设计)
  • 汽车功能安全-软件单元验证 (Software Unit Verification)【用例导出方法、输出物】8
  • 分库分表之实战-sharding-JDBC水平分库+分表后:查询与删除操作实战