一、输入类控件
1.1 Line Edit(输入框)
1.介绍和要点
介绍:
"Line Edit"相关的功能主要用于提供单行文本输入框,供用户输入或编辑文本。
2. 属性

3.信号

4.正则表达式
5.代码
cpp
//初始化第一个输入框,用来输入姓名
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);
ui->lineEdit_phone->setInputMask("000-0000-0000");//设置固定格式,0表示数字占位符
1.2 Test Edit(文本框)
1.介绍和要点
介绍:
"Text Edit"相关的功能主要用于 提供多行文本的编辑和显示区域,支持富文本格式。
要点:
- QPlainTextEdit,只能表示纯文本,而TextEdit还可以表示HTML和markdown
2.属性
3.信号
4.代码
cpp
//文本内容发生改变
void MainWindow::on_textEdit_textChanged()
{
ui->label->setText("textChanged");
}
//选中范围改变触发
void MainWindow::on_textEdit_selectionChanged()
{
ui->label->setText("selectionChanged");
}
//光标移动
void MainWindow::on_textEdit_cursorPositionChanged()
{
ui->label->setText("cursorPositionChanged");
}
//看能不能撤回(Ctrl + Z)
void MainWindow::on_textEdit_undoAvailable(bool b)
{
qDebug() << "undoAvailable" << b;
}
//看能不能重做(Ctrl + y)
void MainWindow::on_textEdit_redoAvailable(bool b)
{
qDebug()<< "redoAvailable" << b;
}
//文本选择/取消
void MainWindow::on_textEdit_copyAvailable(bool b)
{
qDebug()<<"copyAvailable" <<b;
}
1.3 Combo Box(下拉框)
1.介绍和要点
介绍:
"Combo Box"相关的功能主要用于提供一个下拉选择列表,供用户从预定义的多个选项中进行单项选择,也支持用户自行输入。
2.属性
3.方法
4.信号
5.代码
cpp
ui->comboBox->addItem("巨无霸");
ui->comboBox->addItem("鸡腿堡");
ui->comboBox_2->addItem("薯条");
ui->comboBox_2->addItem("鸡翅");
ui->comboBox_3->addItem("可乐");
ui->comboBox_3->addItem("雪碧");
1.4 Spin Box(微调框)
1.介绍和要点
介绍:
"Spin Box"相关的功能主要用于提供一个带有上下调节按钮的数字输入框,供用户从一系列数值中进行精确选择或输入。
2. 属性
要点:correctionMode默认是第一个修正方式
3.信号
4.代码
cpp
ui->spinBox->setRange(1,5);//设置范围
void MainWindow::on_spinBox_valueChanged(int arg1)
{
(void) arg1;//消除警报,因为如果不用Qt会有黄色警告
qDebug()<<ui->spinBox->value();
}
1.5 Date Edit & Time Edit & DateTimeEdit
1.介绍
2.属性
要点:我们的本地时间是北京时间,北京时间是在UTC的基础上+8h
3.方法
dayTo
cpp
#include <QDate>
int daysTo(const QDate &date) const;
// 功能:
// 计算当前日期到指定日期之间的天数差
// 返回值 = date - 当前日期(正数表示当前日期早于指定日期)
// 参数说明:
// const QDate &date:
// 要比较的目标日期
// 返回值:
// int:
// 两个日期之间的天数差
secsTo
cpp
#include <QDateTime>
qint64 secsTo(const QDateTime &other) const;
// 功能:
// 计算当前日期时间到指定日期时间之间的秒数差
// 返回值 = other - 当前日期时间(正数表示目标晚于当前)
// 参数说明:
// const QDateTime &other:
// 要比较的目标日期时间
// 返回值:
// qint64:
// 两个日期时间之间的秒数差
4.信号
5.代码

cpp
void MainWindow::on_pushButton_clicked()
{
//获取两个时间框的日期
QDateTime timeOld = ui->dateTimeEdit->dateTime();
QDateTime timeNew = ui->dateTimeEdit_2->dateTime();
//计算日期差值
int seconds = timeOld.secsTo(timeNew);
//把秒换算成小时
int days = (seconds/3600) / 24;//获取完整天数
int hours = (seconds/3600) % 24;//获取小时数,要减去完整天数因此是求余
ui->label->setText(QString("爱你已经持续了 ") + QString::number(days) + QString(" 天零 ") + QString::number(hours) + QString(" 小时"));
}
1.6 Dial(旋纽)
1.介绍和要点
介绍:
"Dial"相关的功能主要用于提供一个可旋转的圆形旋钮,供用户通过鼠标拖拽或键盘按键在数值范围内进行直观调节。
2.属性
3.信号
4.代码

cpp
//设置可以套圈
ui->dial->setWrapping(true);
//设置刻度线可见
ui->dial->setNotchesVisible(true);
//设置最大值
ui->dial->setMaximum(100);
//设置最小值
ui->dial->setMinimum(0);
//设置初始值
ui->dial->setValue(100);
//数值发生改变触发该信号
void MainWindow::on_dial_valueChanged(int value)
{
//因为不透明度范围是【0,1】所以要除以100,因此还需要转成浮点数
this->setWindowOpacity((double)value / 100);
}
1.7 Slider(滑动条)
1.介绍
介绍:
"Slider"相关的功能主要用于提供一个可拖拽的滑动条,供用户通过鼠标拖拽滑块或键盘按键在数值范围内进行线性调节。
2.属性
3.信号
4.代码

cpp
//设置最小值
ui->horizontalSlider->setMinimum(500);
//设置最大值
ui->horizontalSlider->setMaximum(2000);
//设置按下方向建改变的步长
ui->horizontalSlider->setSingleStep(100);
//设置初始值
ui->horizontalSlider->setValue(800);
//设置最小值
ui->verticalSlider->setMaximum(500);
//设置最大值
ui->verticalSlider->setMaximum(1500);
//设置按下方向键改变的步长
ui->verticalSlider->setSingleStep(100);
//设置初始值
ui->verticalSlider->setValue(600);
void MainWindow::on_horizontalSlider_valueChanged(int value)
{
QRect rect = this->geometry();//获取控件的位置和尺寸
this->setGeometry(rect.x(),rect.y(),value,rect.height());
qDebug()<<value;
}
void MainWindow::on_verticalSlider_valueChanged(int value)
{
QRect rect = this->geometry();
this->setGeometry(rect.x(),rect.y(),rect.width(),value);
qDebug()<<value;
}