目录
输入类控件QSlider
例子:调整窗口大小
例子:通过自定义快捷键调整滑动条位置
输入类控件QSlider
使用QSlider表示一个滑动条

QDail与QSlider都继承于QAbstractSlider,所以其用法基本相似。
核心属性
| 属性 | 说明 |
|---|---|
| value | 持有的数值 |
| minimum | 最⼩值 |
| maximum | 最⼤值 |
| singleStep | 按下⽅向键的时候改变的步⻓ |
| pageStep | 按下 pageUp / pageDown 的时候改变的步⻓ |
| sliderPosition | 滑动条显⽰的 初始位置 |
| tracking | 外观是否会跟踪数值变化. 默认值为 true. ⼀般不需要修改 |
| orientation | 滑动条的⽅向是⽔平还是垂直 |
| invertedAppearance | 是否要翻转滑动条的⽅向 |
| tickPosition | 刻度的位置. |
| tickInterval | 刻度的密集程度. |
核心信号
| 信号 | 说明 |
|---|---|
| valueChanged(int) | 数值改变时触发 |
| rangeChanged(int, int) | 范围变化时触发 |
例子:调整窗口大小
在窗口上设置俩个滑动条,一个水平,一个垂直。
滑动俩个滑动条就可以调整窗口的大小。
(1)设置俩个滑动条,一个是垂直,一个是水平

(2)初始化俩个滑动条的数值

(3)编写滑动条的 valueChanged slot 函数


(4)代码实现
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//将垂直滑动条翻转的方向修改成从下往上修改
ui->verticalSlider->setInvertedAppearance(true);
//设置水平最大值
ui->horizontalSlider->setMaximum(2000);
//设置水平最小值
ui->horizontalSlider->setMinimum(300);
//设置水平初始值
ui->horizontalSlider->setValue(800);
//设置使用方向键水平移动的距离
ui->horizontalSlider->setSingleStep(50);
//设置垂直最大值
ui->verticalSlider->setMaximum(2000);
//设置垂直最小值
ui->verticalSlider->setMinimum(300);
//设置垂直初始值
ui->verticalSlider->setValue(800);
//设置使用方向键垂直移动的距离
ui->verticalSlider->setSingleStep(50);
//按照初始值设置窗口初始大小
QRect rect = this->geometry();
this->setGeometry(rect.x(), rect.y(), 800, 800);
}
Widget::~Widget()
{
delete ui;
}
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)
{
QRect rect = this->geometry();
this->setGeometry(rect.x(), rect.y(), value, rect.height());
}
例子:通过自定义快捷键调整滑动条位置
滑动条本身是可以通过方向键和pageUp pageDown进行操作,但是也可以自定义。
(1)设置一个滑动条,一个label

(2)创建滑动条的valueChanged 的 slot 函数

(3)增加俩个快捷键
- 使用 QShortCut 类设置快捷键
-
快捷键触发时, 会发出 QShortcut::activated 信号, 我们连接到⾃⼰写的 slot 函数

(4)编写自定义槽函数

(5)运行程序

(6)代码实现
#include "widget.h"
#include "ui_widget.h"
#include <QShortcut>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//设置快捷键 "-"
QShortcut* shortcut1 = new QShortcut(this);
shortcut1->setKey(QKeySequence("-"));
connect(shortcut1, &QShortcut::activated, this, &Widget::subValue);
//设置快捷键 "="
QShortcut* shortcut2 = new QShortcut(this);
shortcut2->setKey(QKeySequence("="));
connect(shortcut2, &QShortcut::activated, this, &Widget::addValue);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_horizontalSlider_valueChanged(int value)
{
//通过改变滑动条改变label
ui->label->setText(QString("当前值为:") + QString::number(value) );
}
void Widget::subValue()
{
//获取当前滑动条的值
int value = ui->horizontalSlider->value();
//使用快捷键 "-" 将滑动条像左移动
if(value <= ui->horizontalSlider->minimum())
return;
ui->horizontalSlider->setValue(value - 1);
}
void Widget::addValue()
{
//获取当前滑动条的值
int value = ui->horizontalSlider->value();
//使用快捷键 "+" 将滑动条像右移动
if(value >= ui->horizontalSlider->maximum())
return;
ui->horizontalSlider->setValue(value + 1);
}



















