QT常用控件篇(3)(中)

一、输入类控件

1.1 Line Edit(输入框)

1.介绍和要点

介绍:

"Line Edit"相关的功能主要用于提供单行文本输入框,供用户输入或编辑文本。

2. 属性

3.信号

4.正则表达式

语法: 正则表达式语法 | Microsoft Learn

工具: 正则表达式语法测试工具 - 在线工具

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;
}