目录
输入类控件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);
}