【Qt】输入类控件QSlider

目录

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

  • 26
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值