1.单行输入框
QLineEdit ,单行输入,但是不能换行
属性 | 特点 |
---|---|
text | 输入框中的文本 |
inputMask | 输入内容格式约束,限制用户输入的格式。 |
maxLength | 最大长度,定义输入框允许的最大字符数。 |
frame | 是否添加边框,默认为 true 显示边框。 |
echoMode | 显示方式: - QLineEdit::Normal :显示输入文本 - QLineEdit::Password :隐藏输入字符 - QLineEdit::NoEcho :不显示任何输入字符 |
cursorPosition | 光标所在位置,表示当前光标的索引。 |
alignment | 文字对齐方式,设置水平和垂直方向的对齐。 如:Qt::AlignLeft 、Qt::AlignCenter 等 |
dragEnabled | 是否允许拖拽,默认为 false 不允许。 |
readOnly | 是否是只读的(不允许修改),默认为 false 可编辑。 |
placeHolderText | 当输入框内容为空时显示的提示信息。 |
clearButtonEnabled | 是否会自动显示出"清除按钮",点击可清空文本,默认为 false 不显示 |
信号 | 特点 |
---|---|
cursorPositionChanged(int old, int new) | 当鼠标移动时发出此信号,old 为先前的位置,new 为新位置 |
editingFinished() | 当按返回或者回车键时,或者行编辑失去焦点时,发出此信号。 |
returnPressed() | 当返回或回车键按下时发出此信号。如果设置了验证器,则必须验证通过才能触发。 |
selectionChanged() | 当选中的文本改变时,发出此信号 |
textChanged(const QString &text) | 当 QLineEdit 中的文本改变时,发出此信号,text 是新的文本。代码对文本的修改也能触发这个信号。 |
textEdited(const QString &text) | 当 QLineEdit 中的文本被用户编辑改变时,发出此信号,text 是新的文本。代码对文本的修改不会触发这个信号 |
首先我们来完成一个界面,姓名,密码(隐藏),电话,性别的输入框,点击确定后进行打印
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
ui->lineEdit->setPlaceholderText("请输入姓名");
ui->lineEdit_2->setPlaceholderText("请输入密码");
ui->lineEdit_3->setPlaceholderText("请输入电话号码");
ui->lineEdit->setClearButtonEnabled(true);
ui->lineEdit_2->setClearButtonEnabled(true);
ui->lineEdit_3->setClearButtonEnabled(true);//输入时显示清除按钮
ui->lineEdit_2->setEchoMode(QLineEdit::Password);//设置密码 隐藏
ui->lineEdit_3->setInputMask("000-000-0000");//设置输入格式
connect(ui->pushButton,&QPushButton::clicked,this,&Widget::get);
}
Widget::~Widget()
{
delete ui;
}
void Widget::get()
{
qDebug()<<"客户姓名:"<<ui->lineEdit->text()<<"客户密码:"<<ui->lineEdit_2->text();
int a=0;
if(ui->radioButton->isChecked())
{
a=0;
}
else
{
a=1;
}
qDebug()<<"客户性别"<<(a==0?ui->radioButton->text():ui->radioButton_2->text());
qDebug()<<"电话"<<ui->lineEdit_3->text();
}

2.使用正则表达式进行验证
在电话输入时,为了格式的合法化,要11位数字,否则无法点击确认按钮(正则表达式问ai就行)
^\d{11}$
可以使用QRegExpValidator创建一个验证器进行操作,并且给lineEdit加textEdit信号的 slot 函数
on_lineEdit_textEdited 的参数是当前输入框的内容,通过 lineEdit->validator() 获取到内置的验证器
通过 validate 方法验证文本是否符合要求,第一个参数填写的是要验证的字符串 。由于参数要求是 QString& 而不是 const QString&,需要把这个变量复制一下。第二个参数是⼀个 int&,是输出型参数。当验证的字符串不匹配时,返回这个字符串的长度(没有什么实质作用)。返回值是⼀个枚举。 QValidator::Acceptable 表示 验证通过,QValidator::Invalid 表示验证不通过。
以下是验证代码
#include "widget.h"
#include "ui_widget.h"
#include<QRegularExpression>
#include<QRegularExpressionValidator>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QRegularExpression reg("^\\d{11}$");
QRegularExpressionValidator *validator = new QRegularExpressionValidator(reg, this);
ui->lineEdit_3->setValidator(validator);
ui->lineEdit->setPlaceholderText("请输入姓名");
ui->lineEdit_2->setPlaceholderText("请输入密码");
ui->lineEdit_3->setPlaceholderText("请输入电话号码");
ui->lineEdit->setClearButtonEnabled(true);
ui->lineEdit_2->setClearButtonEnabled(true);
ui->lineEdit_3->setClearButtonEnabled(true);
ui->lineEdit_2->setEchoMode(QLineEdit::Password);
ui->lineEdit_3->setInputMask("000-000-0000");
connect(ui->pushButton,&QPushButton::clicked,this,&Widget::get);
connect(ui->lineEdit_3, &QLineEdit::textChanged, this, &Widget::judge);
}
Widget::~Widget()
{
delete ui;
}
void Widget::get()
{
qDebug()<<"客户姓名:"<<ui->lineEdit->text()<<"客户密码:"<<ui->lineEdit_2->text();
int a=0;
if(ui->radioButton->isChecked())
{
a=0;
}
else
{
a=1;
}
qDebug()<<"客户性别"<<(a==0?ui->radioButton->text():ui->radioButton_2->text());
qDebug()<<"电话"<<ui->lineEdit_3->text();
}
void Widget::judge(const QString&text)
{
QString context=text;
int pos=0;
if(ui->lineEdit_3->validator()->validate(context,pos)==QValidator::Acceptable)
{
ui->pushButton->setEnabled(true);
}
else
{
ui->pushButton->setEnabled(false);
}
}
创建验证器
QRegularExpression reg("^\\d{11}$");
QRegularExpressionValidator *validator = new QRegularExpressionValidator(reg, this);
连接
connect(ui->lineEdit_3, &QLineEdit::textChanged, this, &Widget::judge);
验证函数
void Widget::judge(const QString&text)
{
QString context=text;
int pos=0;
if(ui->lineEdit_3->validator()->validate(context,pos)==QValidator::Acceptable)
{
ui->pushButton->setEnabled(true);
}
else
{
ui->pushButton->setEnabled(false);
}
}
可以看到输入字母时按钮锁定

3.两次输入密码是否一致
设置一个槽函数用于比较(两个按钮调用一个相同的槽函数)
#include "widget.h"
#include "ui_widget.h"
#include<QRegularExpression>
#include<QRegularExpressionValidator>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QRegularExpression reg("^\\d{11}$");
QRegularExpressionValidator *validator = new QRegularExpressionValidator(reg, this);
ui->lineEdit_3->setValidator(validator);
ui->lineEdit->setPlaceholderText("请输入姓名");
ui->lineEdit_2->setPlaceholderText("请输入密码");
ui->lineEdit_3->setPlaceholderText("请输入电话号码");
ui->lineEdit_4->setPlaceholderText("请再次输入密码");
ui->lineEdit->setClearButtonEnabled(true);
ui->lineEdit_2->setClearButtonEnabled(true);
ui->lineEdit_3->setClearButtonEnabled(true);
ui->lineEdit_4->setClearButtonEnabled(true);
ui->lineEdit_2->setEchoMode(QLineEdit::Password);
ui->lineEdit_4->setEchoMode(QLineEdit::Password);
ui->lineEdit_3->setInputMask("000-000-0000");
connect(ui->pushButton,&QPushButton::clicked,this,&Widget::get);
connect(ui->lineEdit_3, &QLineEdit::textChanged, this, &Widget::judge);
connect(ui->lineEdit_2, &QLineEdit::textChanged, this, &Widget::judge2);
connect(ui->lineEdit_4, &QLineEdit::textChanged, this, &Widget::judge2);
}
Widget::~Widget()
{
delete ui;
}
void Widget::get()
{
qDebug()<<"客户姓名:"<<ui->lineEdit->text()<<"客户密码:"<<ui->lineEdit_2->text();
int a=0;
if(ui->radioButton->isChecked())
{
a=0;
}
else
{
a=1;
}
qDebug()<<"客户性别"<<(a==0?ui->radioButton->text():ui->radioButton_2->text());
qDebug()<<"电话"<<ui->lineEdit_3->text();
}
void Widget::judge(const QString&text)
{
QString context=text;
int pos=0;
if(ui->lineEdit_3->validator()->validate(context,pos)==QValidator::Acceptable)
{
ui->pushButton->setEnabled(true);
}
else
{
ui->pushButton->setEnabled(false);
}
}
void Widget::judge1(const QString &arg1)
{
this->compare();
}
void Widget::judge2(const QString &arg1)
{
this->compare();
}
void Widget::compare()
{
const QString &s1=ui->lineEdit_2->text();
const QString &s2=ui->lineEdit_4->text();
if(s1.isEmpty()&&s2.isEmpty())
{
ui->label_6->setText("密码为空");
}
else if(s1==s2)
{
ui->label_6->setText("密码一致");
}
else
{
ui->label_6->setText("密码不一致");
}
}

4.切换显示密码
可以使用checkbox,这个是一个有是否选中状态的按钮,来切换密码模式
#include "widget.h"
#include "ui_widget.h"
#include<QRegularExpression>
#include<QRegularExpressionValidator>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QRegularExpression reg("^\\d{11}$");
QRegularExpressionValidator *validator = new QRegularExpressionValidator(reg, this);
ui->lineEdit_3->setValidator(validator);
ui->lineEdit->setPlaceholderText("请输入姓名");
ui->lineEdit_2->setPlaceholderText("请输入密码");
ui->lineEdit_3->setPlaceholderText("请输入电话号码");
ui->lineEdit_4->setPlaceholderText("请再次输入密码");
ui->lineEdit->setClearButtonEnabled(true);
ui->lineEdit_2->setClearButtonEnabled(true);
ui->lineEdit_3->setClearButtonEnabled(true);
ui->lineEdit_4->setClearButtonEnabled(true);
ui->lineEdit_2->setEchoMode(QLineEdit::Password);
ui->lineEdit_4->setEchoMode(QLineEdit::Password);
ui->lineEdit_3->setInputMask("000-000-0000");
connect(ui->pushButton,&QPushButton::clicked,this,&Widget::get);
connect(ui->lineEdit_3, &QLineEdit::textChanged, this, &Widget::judge);
connect(ui->lineEdit_2, &QLineEdit::textChanged, this, &Widget::judge2);
connect(ui->checkBox, &QCheckBox::stateChanged, this, &Widget::change);
connect(ui->lineEdit_4, &QLineEdit::textChanged, this, &Widget::judge2);
}
Widget::~Widget()
{
delete ui;
}
void Widget::get()
{
qDebug()<<"客户姓名:"<<ui->lineEdit->text()<<"客户密码:"<<ui->lineEdit_2->text();
int a=0;
if(ui->radioButton->isChecked())
{
a=0;
}
else
{
a=1;
}
qDebug()<<"客户性别"<<(a==0?ui->radioButton->text():ui->radioButton_2->text());
qDebug()<<"电话"<<ui->lineEdit_3->text();
}
void Widget::judge(const QString&text)
{
QString context=text;
int pos=0;
if(ui->lineEdit_3->validator()->validate(context,pos)==QValidator::Acceptable)
{
ui->pushButton->setEnabled(true);
}
else
{
ui->pushButton->setEnabled(false);
}
}
void Widget::judge1(const QString &arg1)
{
this->compare();
}
void Widget::judge2(const QString &arg1)
{
this->compare();
}
void Widget::compare()
{
const QString &s1=ui->lineEdit_2->text();
const QString &s2=ui->lineEdit_4->text();
if(s1.isEmpty()&&s2.isEmpty())
{
ui->label_6->setText("密码为空");
}
else if(s1==s2)
{
ui->label_6->setText("密码一致");
}
else
{
ui->label_6->setText("密码不一致");
}
}
void Widget::change(bool checked)
{
if(checked)
{
ui->lineEdit_2->setEchoMode(QLineEdit::Normal);
}
else
{
ui->lineEdit_2->setEchoMode(QLineEdit::Password);
}
}

5.多行输入框
QTextEdit是一个富文本输入框,而且会在内容超过范围时提供滚动条
属性 | 特点 |
---|---|
markdown | 输入框内持有的内容,支持 Markdown 格式。能够自动对 Markdown 文本进行渲染成 HTML。 |
html | 输入框内持有的内容,可以支持大部分 HTML 标签,包括 img 和 table 等 |
placeHolderText | 输入框为空时提示的内容。 |
readOnly | 是否是只读的,默认为 false 可编辑。 |
undoRedoEnabled | 是否开启 undo/redo 功能,默认为 true 开启。 按下 Ctrl+Z 触发 undo 按下 Ctrl+Y 触发 redo |
autoFormatting | 开启自动格式化功能。 |
tabStopWidth | 按下缩进占多少空间,默认单位为像素。 |
overwriteMode | 是否开启覆盖写模式,默认为 false 不开启。 |
acceptRichText | 是否接收富文本内容,默认为 true 接收 |
verticalScrollBarPolicy | 垂直方向滚动条的出现策略: - Qt::ScrollBarAsNeeded :根据内容自动决定是否需要滚动条(默认值) - Qt::ScrollBarAlwaysOff :总是关闭滚动条 - Qt::ScrollBarAlwaysOn :总是显示滚动条 |
horizontalScrollBarPolicy | 水平方向滚动条的出现策略: - Qt::ScrollBarAsNeeded :根据内容自动决定是否需要滚动条(默认值) |
|-----------------------------|-----------------------------------|
| 信号 | 特点 |
| textChanged() | 文本内容改变时触发。 |
| selectionChanged() | 选中范围改变时触发。 |
| cursorPositionChanged() | 光标移动时触发。 |
| undoAvailable(bool) | 当可以进行 undo 操作时触发,参数表示当前是否可以 undo。 |
| redoAvailable(bool) | 当可以进行 redo 操作时触发,参数表示当前是否可以 redo。 |
| copyAvailable(bool) | 文本被选中或取消选中时触发,参数表示当前是否有可复制的文本。 |
创建一个标签获取输入框的内容
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
connect(ui->textEdit,&QTextEdit::textChanged,this,&Widget::get);
}
Widget::~Widget()
{
delete ui;
}
void Widget::get()
{
ui->label->setText(ui->textEdit->toPlainText());
}

6.下拉框
QComboBox
|--------------|------------------------------------------------------|
| 属性 | 特点 |
| currentText | 当前选中的文本 |
| currentIndex | 当前选中的条目下标,从0开始计算。如果没有条目被选中,值为-1 |
| editable | 是否允许修改;设为true时,QComboBox的行为接近QLineEdit,并可设置validator |
| iconSize | 下拉框图标(小三角)的大小 |
| maxCount | 最多允许有多少个条目 |
|--------------------------|---------------------------------|
| 函数 | 特点 |
| addItem(const QString&) | 添加一个条目 |
| currentIndex() | 获取当前条目的下标,从0开始计算。如果没有条目被选中,值为-1 |
| currentText() | 获取当前条目的文本内容 |
信号 | 特点 |
---|---|
activated(int) | 用户选择了选项时发出,相当于用户点开下拉框并且鼠标划过某个选项 |
activated(const QString &text) | 同上,但是传递的是文本参数 |
currentIndexChanged(int) | 当前选项改变时发出,用户已经明确选择了一个选项 |
currentIndexChanged(const QString &text) | 同上,但是传递的是文本参数 |
editTextChanged(const QString &text) | 当编辑框中的文本改变时发出(当editable为true时有效) |
设置简单的演示程序
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
connect(ui->pushButton,&QPushButton::clicked,this,&Widget::get);
}
Widget::~Widget()
{
delete ui;
}
void Widget::get()
{
qDebug()<<ui->comboBox->currentText()<<ui->comboBox_2->currentText();
}

7.文件下拉框
以下为演示代码,注意路径不能有中文
#include "widget.h"
#include "ui_widget.h"
#include<fstream>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
std::ifstream file("D:/project/apple.txt");
if(!file.is_open())
{
qDebug()<<1;
}
std::string line;
while(std::getline(file,line))
{
ui->comboBox_3->addItem(QString::fromStdString(line));
}
connect(ui->pushButton,&QPushButton::clicked,this,&Widget::get);
}
Widget::~Widget()
{
delete ui;
}
void Widget::get()
{
qDebug()<<ui->comboBox->currentText()<<ui->comboBox_2->currentText();
}

8.普通,日期,时间微调框
QSpanBox,就是可以通过按钮改变数字的大小
属性 | 特点 |
---|---|
value | 存储的数值 |
singleStep | 每次调整的"步长". 按下一次按钮数据变化多少 |
displayIntegerBase | 数字的进制。例如设为10,则是按照10进制表示;设为2则为2进制表示 |
minimum | 最小值 |
maximum | 最大值 |
suffix | 后缀 |
prefix | 前缀 |
wrapping | 是否允许换行 |
frame | 是否带边框 |
alignment | 文字对齐方式 |
readOnly | 是否允许修改 |
buttonSymbols | 按钮上的图标:上下箭头形式、加减号形式、没有按钮 |
accelerated | 按下按钮时是否为快速调整模式 |
correctionMode | 输入有误时如何修正: - CorrectToPreviousValue: 恢复为上一个有效值 - CorrectToNearestValue: 恢复为最接近的有效值 |
keyboardTracking | 是否开启键盘跟踪。 设为true, 每次在输入框输入一个数字, 都会触发一次valueChanged() 和 textChanged() 信号。 设为false, 只有在最终按下enter 或者输入框失去焦点, 才会触发 valueChanged() 和 textChanged() 信号 |
日期微调框QDateEdit,时间微调框QTimeEdit
属性 | 特点 |
---|---|
dateTime | 时间日期的值。格式形如:2000/1/1 0:00:00 |
date | 单纯日期的值。格式形如:2001/1/1 |
time | 单纯时间的值。格式形如:0:00:00 |
displayFormat | 时间日期显示格式。常用的格式化符号: - y : 年份 - M : 月份 - d : 日期 - H : 小时(24小时制) - m : 分钟 - s : 秒 注意,不同语言或库的设定规则可能存在差异,具体使用时应查阅文档 |
minimumDateTime | 设置可选择的最小时间日期 |
maximumDateTime | 设置可选择的最大时间日期 |
timeSpec | 指定时间的时区或偏移: - Qt::LocalTime : 显示本地时间 - Qt::UTC : 显示协调世界时(UTC) - Qt::OffsetFromUTC : 显示相对于UTC的偏移量****(时差)****(UTC=LocalTime+8) |
信号 | 特点 |
---|---|
dateChanged(QDate) | 当日期改变时触发。参数 QDate 包含新的日期值 |
timeChanged(QTime) | 当时间改变时触发。参数 QTime 包含新的时间值 |
dateTimeChanged(QDateTime) | 当日期或时间任意一个改变时触发。参数 QDateTime 包含新的日期时间值 |
演示代码
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
connect(ui->pushButton,&QPushButton::clicked,this,&Widget::print);
}
void Widget::print()
{
qDebug()<<ui->comboBox->currentText()<<ui->spinBox->text();
qDebug()<<ui->comboBox_2->currentText()<<ui->spinBox_2->text();
QDateTime old=ui->dateTimeEdit->dateTime();
QDateTime new1=ui->dateTimeEdit_2->dateTime();
int second=old.secsTo(new1);
int hour=(second/3600)%24;
int day=(second/3600)/24;
qDebug()<<day<<hour;
}
Widget::~Widget()
{
delete ui;
}

9.按钮
QDial
属性 | 特点 |
---|---|
value | 持有的数值 |
minimum | 最小值 |
maximum | 最大值 |
singleStep | 按下方方向键的时候改变的步长 |
pageStep | 按下 PageUp/PageDown 的时候改变的步长 |
sliderPosition | 界面上旋钮显示的初始位置 |
racking | 外观是否会跟踪数值变化,默认值为 true,一般不需要修改 |
wrapping | 是否允许循环调整。即数值如果超过最大值,是否允许回到最小值(调整过程能否套圈) |
otchesVisible | 是否显示刻度线 |
notchTarget | 刻度线之间的相对位置。数字越大,刻度线越稀疏 |
信号 | 特点 |
---|---|
valueChanged(int) | 数值改变时触发 |
rangeChanged(int, int) | 范围变化时触发。参数包含新的最小值和最大值 |
设置按钮控制不透明度
在qt designer里面设置刻度可见,初始值100,从20到80,可以循环旋转(注意有参数的槽函数应该怎么连接
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public slots:
void get(int val);
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
connect(ui->dial, SIGNAL(valueChanged(int)), this, SLOT(get(int)));
}
Widget::~Widget()
{
delete ui;
}
void Widget::get(int val)
{
ui->label->setText("当前不透明度为"+QString::number(val));
this->setWindowOpacity((double)val/100);
}
10.滑动条
QSlider,它和QDial共同继承于QAbstractSlider,所以属性和信号基本一致
使用滑动条调整窗口大小与自定义按键控制hua'don't
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
connect(ui->horizontalSlider, &QSlider::valueChanged, this, &Widget::getline);
connect(ui->verticalSlider, &QSlider::valueChanged, this, &Widget::get);
}
Widget::~Widget()
{
delete ui;
}
void Widget::getline(int val)
{
const QRect&rect=this->geometry();
this->setGeometry(rect.x(),rect.y(),val,rect.height());
}
void Widget::get(int val)
{
const QRect&rect=this->geometry();
this->setGeometry(rect.x(),rect.y(),rect.width(),val);
}

也可以设置快捷键w和s来同步控制滑动条
#include "widget.h"
#include "ui_widget.h"
#include<QShortcut>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QShortcut*sc1=new QShortcut(this);
QShortcut*sc2=new QShortcut(this);
sc1->setKey(QKeySequence("w"));
sc2->setKey(QKeySequence("s"));
connect(sc1,&QShortcut::activated,this,&Widget::add);
connect(sc2,&QShortcut::activated,this,&Widget::sub);
// connect(ui->horizontalSlider, &QSlider::valueChanged, this, &Widget::getline);
connect(ui->verticalSlider, &QSlider::valueChanged, this, &Widget::set);
// connect(ui->verticalSlider, &QSlider::valueChanged, this, &Widget::get);
ui->verticalSlider->setValue(this->height());
}
Widget::~Widget()
{
delete ui;
}
void Widget::getline(int val)
{
const QRect&rect=this->geometry();
this->setGeometry(rect.x(),rect.y(),val,rect.height());
}
void Widget::get(int val)
{
const QRect&rect=this->geometry();
this->setGeometry(rect.x(),rect.y(),rect.width(),val);
}
void Widget::sub()
{
const QRect& rect = this->geometry();
int newHeight = rect.height() - 10;
if (newHeight < 10) {
newHeight = 10;
}
this->setGeometry(rect.x(), rect.y(), rect.width(), newHeight);
ui->verticalSlider->setValue(newHeight);
}
void Widget::add()
{
const QRect& rect = this->geometry();
int newHeight = rect.height() + 10;
this->setGeometry(rect.x(), rect.y(), rect.width(), newHeight);
ui->verticalSlider->setValue(newHeight);
}
void Widget::set(int height)
{
const QRect& rect = this->geometry();
this->setGeometry(rect.x(), rect.y(), rect.width(), height);
}
