QT Review之 QSlider(滑块)

QTQSlider是Qt库中的滑块组件,用于用户交互式地选取有界值。它具有设置最小值、最大值、单步长和页面步长等功能。文章提供了一个实验案例,展示如何在GUI中应用QSlider来控制颜色选择,通过连接信号和槽函数实现实时颜色更新。此外,还介绍了滑块的方向、反向显示和控制以及刻度显示等属性。
摘要由CSDN通过智能技术生成

目录

QT QSlider

是什么

实验案例

怎么用

案例

欢迎大家star


QT QSlider

是什么

滑块是控制有界值的经典小部件。它允许用户沿着水平或垂直槽移动滑块手柄,并将手柄的位置转换为合法范围内的整数值。

QSlider 自己的功能很少,大部分功能都继承于 QAbstractSlider。最常用的函数是 setValue () ,它可以将滑块直接设置为某个值; triggerAction ()可以模拟单击的效果(对快捷键有用) ;setSingleStep ()setPageStep ()可以设置步骤; setMinimum()setMaximum()可以定义滚动条的范围。

实验案例

欢迎大家star:

QTStudy/QTReviewQSlider at main · allenmirac/QTStudy · GitHub

怎么用

继承的属性:

  • minimummaximum:设置输入范围的最小值和最大值,例如,用红、绿、蓝配色时,每 种基色的大小范围是0~255,所以设置minimum为0,maximum为255。

  • singlestep:单步长,拖动标尺上的滑块,或按下左/右光标键时的最小变化数值。

  • pageStep:在Slider上输入焦点,按PgUpPgDn键时变化的数值。

  • value:组件的当前值,拖动滑块时自动改变此值,并限定在minimummaximum定义的 范围之内。

  • sliderPosition:滑块的位置,若tracking属性设置为true,sliderPosition就等于value。

  • tracking:sliderPosition是否等同于value,如果tracking=true,改变value时也同时改变 sliderPosition。

  • orientation: Slider的方向,可以设置为水平或垂直。方向参数是Qt的枚举类型enum

  • Qt::Orientation:取值包括以下两种。

    枚举含义
    Qt::Horizontal水平方向
    Qt::Vertical垂直方向
  • invertedAppearance:显示方式是否反向,invertedAppearance=false时,水平的Slider由左向右数值增大,否则反过来。

  • invertedControls:反向按键控制,若invertedControls=true,则按下PgUpPgDn按键时调整数值的反向相反。

  • 属于QSlider的专有属性有两个,如下:

  • tickPosition:标尺刻度的显示位置,使用枚举类型QSlider:TickPosition,取值包括以下6种

    枚举含义
    QSlider::NoTicks不显示刻度
    QSlider::TicksBothSides标尺两侧都显示刻度
    QSlider::TicksAbove标尺上方显示刻度
    QSlider::TicksBelow标尺下方显示刻度
    QSlider::TicksLeft标尺左侧显示刻度
    QSlider::TicksRight标尺右侧显示刻度
  • ticklnterval:标尺刻度的间隔值,若设置为0,会在singleSteppageStep之间自动选择。

案例

 #include "exqslider.h"
 #include "ui_exqslider.h"
 ​
 ExQSlider::ExQSlider(QWidget *parent)
     : QWidget(parent)
     , ui(new Ui::ExQSlider)
 {
     ui->setupUi(this);
     setWindowTitle(QString("QSlider的用法"));
 ​
     //QSlider控件,设置最大值为255,初始范围是0-100;
     ui->sliderRed->setMaximum(255);
     ui->sliderGreen->setMaximum(255);
     ui->sliderBlue->setMaximum(255);
     ui->sliderAlpha->setMaximum(255);
 ​
     //QSlider控件,设置初值
     ui->sliderRed->setValue(145);
     ui->sliderGreen->setValue(190);
     ui->sliderBlue->setValue(251);
     ui->sliderAlpha->setValue(255);
 ​
     //QTextEdit控件,设置初试颜色
     QColor color;
     color.setRgb(145, 190, 251, 255);
     QPalette palette = ui->textColor->palette();//拿到调色板
     palette.setColor(QPalette::Base, color);    //设置背景颜色
     ui->textColor->setPalette(palette);
 ​
     connect(ui->sliderRed, &QSlider::valueChanged, this, &ExQSlider::onSetColor);
     connect(ui->sliderGreen, &QSlider::valueChanged, this, &ExQSlider::onSetColor);
     connect(ui->sliderBlue, &QSlider::valueChanged, this, &ExQSlider::onSetColor);
     connect(ui->sliderAlpha, &QSlider::valueChanged, this, &ExQSlider::onSetColor);
 }
 ​
 ExQSlider::~ExQSlider()
 {
     delete ui;
 }
 ​
 void ExQSlider::onSetColor(int val){
     Q_UNUSED(val);
 ​
     int nRed = ui->sliderRed->value();
     int nGreen = ui->sliderGreen->value();
     int nBlue = ui->sliderBlue->value();
     int nAlpha = ui->sliderAlpha->value();
 ​
     QColor color;
     color.setRgb(nRed, nGreen, nBlue, nAlpha);
     QPalette palette = ui->textColor->palette();
     palette.setColor(QPalette::Base, color);
     ui->textColor->setPalette(palette);
 ​
     ui->labRGBVal->setText(QString("RGB(%1, %2, %3, %4)").arg(nRed).arg(nGreen).arg(nBlue).arg(nAlpha));
 ​
 }

欢迎大家star

GitHub - allenmirac/QTStudy: This is a repository to learn QT.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值