目录
- 一、Line Edit
- 二、Text Edit
- 三、ComBo
- 四、DateTimeEdit
- 五、Slider
一、Line Edit
QLineEdit 用来表示单行输入框,可以输入一段文本,但是不能换行。
属性 | 说明 |
---|---|
test | 输入框中的文本 |
inputMask | 输入内容格式约束 |
maxLength | 最大长度 |
frame | 是否添加边框 |
echoMode | 显示方式,normal,Password:隐藏,使用*代替,NoEcho:不显示任何字符 |
alignment | 文本对齐方式 |
dragEnabled | 是否允许拖拽 |
readOnly | 是否不可修改 |
placeHolderTest | 输入框为空时,显示的提示信息 |
clearButtonEnabled | 清除按钮 |
实例
获取lineEdit中信息打印出来
在ui中拖入几个lineEdit以及label和pushbutton
给提交设置槽函数
#include "widget.h"
#include "ui_widget.h"
#include<QLineEdit>
#include<QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//编辑用户名
//默认显示内容
ui->lineEdit_name->setPlaceholderText("请输入用户名");
//编辑密码
//默认显示内容
ui->lineEdit_password->setPlaceholderText("请输入密码");
//内容显示为密码格式
ui->lineEdit_password->setEchoMode(QLineEdit::Password);
//添加清除按钮
ui->lineEdit_password->setClearButtonEnabled(true);
//编辑手机号
ui->lineEdit_phone->setPlaceholderText("请输入手机号");
}
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();
}
//复选框槽函数,用来显示LineEdit中密码是否可见
void Widget::on_checkBox_toggled(bool checked)
{
if(checked)
{
ui->lineEdit_password->setEchoMode(QLineEdit::Normal);
}else
{
ui->lineEdit_password->setEchoMode(QLineEdit::Password);
}
}
实现效果
二、Text Edit
QTextEdit 表示多行输入框.也是一个富文本& markdown编辑器.
并且能在内容超出编辑框范围时自动提供滚动条.
属性 | 说明 |
---|---|
markdown | 输入框内持有的内容.支持 markdown 格式.能够自动的对markdown 文本进行渲染成 html |
html | 输入框内持有的内容.可以支持大部分 html标签.包括 img 和 table 等 |
placeHolderText | 输入框为空时提示的内容, |
readOnly | 是否只读 |
undoRedoEnable | 是否开启undo、redo功能 ctrl+z触发undo,ctrl+y触发redo |
autoFormating | 开启自动格式化 |
tabstopWidth | 按下缩进占多少空间 |
overwirteMode | 是否开启覆盖模式 |
信号 | 说明 |
---|---|
textChanged() | 文本内容被修改 |
selectionChanged() | 选中区域被修改 |
cursorPositionChanged() | 光标位置被修改 |
undoAvaliable(bool) | undo操作时触发 |
redoAvaliable(bool) | redo操作时触发 |
copyAvaliable(bool) | 文本被选中/取消时触发 |
实例:
先在ui中拖入需要的控件,一个TestEdit
//修改TestEdit中内容触发该信号 testChanged()
void Widget::on_textEdit_textChanged()
{
qDebug()<<"textchanged: "<<ui->textEdit->toPlainText();
}
//选择TestEdit中内容触发信号 selectionChanged()
void Widget::on_textEdit_selectionChanged()
{
QTextCursor cursor = ui->textEdit->textCursor();
qDebug()<<"selectionChanged: "<<cursor.selectedText();
}
//光标位置移动时触发
void Widget::on_textEdit_cursorPositionChanged()
{
QTextCursor cursor = ui->textEdit->textCursor();
qDebug()<<"cursorPositionChanged: "<<cursor.position();
}
三、ComBo
QComboBox 表示下拉框
属性 | 说明 |
---|---|
currentText | 当前选中的文本 |
currentIndex | 当前选中的条目下标 |
editable | 是否允许被修改 |
iconSize | 下拉框大小 |
maxCount | 最多允许多少个条目 |
addItem(const QString&) | 添加一个条目 |
currentText() | 获取当前条目的文本内容 |
信号
信号 | 说明 |
---|---|
activited(int) activited(const QString&) | 当用户选择一个选项时发出,点开下拉框,鼠标滑过某个选项,但是还没有做出选择 |
currentIndexChange(int) currentIndexChange(const QString&) | 当前选择改变时发生 |
editTextChange(const QString&) | 当编辑框中内容发生改变时发出 |
实例
显示下拉框中内容
方法① 使用代码设置条目内容
方法② 右键控件点击编辑项目
从文件中读取下拉列表条目
//读取文件中内容,将文件中内容读取作为combobox的选项
std::ifstream file("C:/Users/HP/Desktop/config.txt");
if(!file.is_open())
{
qDebug()<<"读取失败";
return;
}
//按行读取文本
std::string line;
while(std::getline(file,line))
{
//取到的内容设置到下拉框中
//QString中静态方法,将string转化为QString
ui->comboBox->addItem(QString::fromStdString(line));
}
file.close();
四、DateTimeEdit
属性 | 说明 |
---|---|
dateTime | 时间日期的值 |
date | 单纯日期的值 |
time | 单纯时间的值 |
displayFormat | 时间的日期格式 |
minimumDateTime | 最小日期时间 |
maximumDateTime | 最大日期时间 |
timeSpec | Qt::LocalTime 显示本地时间 Qt::UTC 显示协调世界时 Qt::OffsetFromUTC 显示相对UTC偏移量 |
信号
属性 | 说明 |
---|---|
dateChanged(QDate) | 日期改变时触发 |
timeChanged(QTime) | 时间改变时触发 |
dateTimeChanged(QDateTime) | 时间日期任意一个改变时触发 |
实例
计算两个date之间的天数差
五、Slider
QSlider表示一个滑动条
属性 | 说明 |
---|---|
value | 持有的数值 |
minimum | 最小值 |
maximum | 最大值 |
singleStep | 按下方向键时改变的步长 |
sliderPosition | 滑动条显示的初始位置 |
tracking | 外观是否跟随数值变化 |
orientation | 滑动条是水平还是垂直 |
invertedAppearance | 是否翻转滑动跳长方向 |
tickPosition | 刻度的位置 |
tickInterval | 刻度的密集程度 |
信号
属性 | 说明 |
---|---|
valueChanged(int) | 数值变化时发出 |
rangeChanged(int,int) | 范围变化时发出 |
实例
通过滑动条改变窗口大小
为滑动条增加快捷键控制窗口大小
#include "widget.h"
#include "ui_widget.h"
#include<QDebug>
#include<QRect>
#include<QShortcut>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
ui->horizontalSlider->setMinimum(0);
ui->horizontalSlider->setMaximum(1800);
ui->horizontalSlider->setSliderPosition(800);
QShortcut* shortcut1 = new QShortcut(this);
shortcut1->setKey(QKeySequence("-"));
connect(shortcut1,&QShortcut::activated,this,&Widget::Sub);
QShortcut* shortcut2 = new QShortcut(this);
shortcut2->setKey(QKeySequence("="));
connect(shortcut2,&QShortcut::activated,this,&Widget::Add);
}
Widget::~Widget()
{
delete ui;
}
void Widget::Add()
{
int value = ui->horizontalSlider->value();
ui->horizontalSlider->setValue(value+20);
}
void Widget::Sub()
{
int value = ui->horizontalSlider->value();
ui->horizontalSlider->setValue(value-20);
}
void Widget::on_horizontalSlider_valueChanged(int value)
{
QRect rect = this->geometry();
this->setGeometry(rect.x(),rect.y(),value,rect.height());
}
效果