Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍Slider滑块条组件的常用方法及灵活运用。

当涉及到C++ Qt开发中的Slider滑块条组件时,你可能会用到QSlider类。QSlider是一个用于选择整数值的控件,常用于调整范围内的数值,如音量、亮度等。在水平方向上的Slider通常被称为水平滑块(Horizontal Slider),而在垂直方向上的Slider被称为垂直滑块(Vertical Slider)。

水平滑块(Horizontal Slider)特点

  • 方向: 在水平轴上移动,允许用户通过拖动滑块来选择数值。
  • 应用场景: 适用于需要在水平方向上进行范围选择的情况,比如调整音量、进度等。

垂直滑块(Vertical Slider)特点

  • 方向: 在垂直轴上移动,允许用户通过拖动滑块来选择数值。
  • 应用场景: 适用于需要在垂直方向上进行范围选择的情况,比如调整亮度、高度等。

这两种Slider都是在用户界面中提供直观、交互式的方式来选择数值范围的优秀组件,它们能够很好地与Qt应用程序的其他部分集成。

以下是QSlider类的一些常用方法的说明和概述,以表格形式进行说明:

方法 描述
QSlider(Qt::Orientation, QWidget *parent = nullptr) 构造函数,创建一个滑块控件。Qt::Orientation参数指定方向(Qt::HorizontalQt::Vertical)。
setMinimum(int min) 设置滑块的最小值。
setMaximum(int max) 设置滑块的最大值。
setSingleStep(int step) 设置用户通过鼠标或键盘按键时,滑块的单步大小。
setPageStep(int step) 设置用户通过点击滑块轨道时,滑块的页面步长。
setValue(int value) 设置滑块的当前值。
value() const 返回滑块的当前值。
setTickInterval(int ti) 设置刻度间隔,以便显示刻度标记。
setTickPosition(TickPosition position) 设置刻度标记的位置(NoTicksTicksAboveTicksBelowTicksBothSides)。
sliderPosition() const 返回滑块的位置,通常与value()相同,但可能在某些情况下不同(例如,未捕获的移动)。
setTracking(bool enable) 启用/禁用实时跟踪。如果启用,滑块在拖动时会实时更新值;禁用时,只有在释放鼠标时才更新。
setTickInterval(int ti) 设置刻度间隔,以便显示刻度标记。
setTickPosition(TickPosition position) 设置刻度标记的位置(NoTicksTicksAboveTicksBelowTicksBothSides)。

这些方法提供了一些基本的控制和配置选项,以便根据应用程序的需求对QSlider进行调整。在使用这些方法时,你可以根据具体的场景和用户体验需求来灵活选择参数值。

1.1 使用滑块条事件

如下图,我们首先创建一个页面UI,在页面中左侧放置Vertical Slider垂直滑块,底部放置Horizontal Slider水平滑块,在水平滑块的上方放置两个lineEdit组件,在其右侧是两个调节按钮。

不论是水平滑块(Horizontal Slider)条还是垂直滑块(Vertical Slider)条其都有一个valueChanged(int)的槽函数,该信号用于接收滑块条的参数改变情况,通常会返回到函数参数上,此时只需要在槽函数内对该参数进行捕捉处理即可,如下代码,通过捕捉滑块进度并将其输出到编辑框内;

// 垂直滑块(Vertical Slider)条
void MainWindow::on_verticalSlider_valueChanged(int value)
{
// 转换整数为string
QString myString = QString::number(value);
// 设置到编辑框内
ui->lineEdit->setText(myString);
} // 水平滑块(Horizontal Slider)条
void MainWindow::on_horizontalSlider_valueChanged(int value)
{
// 转换整数为string
QString myString = QString::number(value);
// 设置到编辑框内
ui->lineEdit_2->setText(myString);
}

当用户点击页面中的设置按钮时,此时在后端只需要调用verticalSliderhorizontalSlider滑块条的setValue属性即可实现对滑块条的赋值。

// 设置垂直滑块(Vertical Slider)条进度
void MainWindow::on_pushButton_clicked()
{
// 字符串转整数
int x = ui->lineEdit->text().toUInt();
// 设置数值到滑块条
ui->verticalSlider->setValue(x);
} // 设置水平滑块(Horizontal Slider)条
void MainWindow::on_pushButton_2_clicked()
{
int x = ui->lineEdit_2->text().toUInt();
ui->horizontalSlider->setValue(x);
}

运行代码,读者可自行测试滑块条的取值与设置功能,如下图所示;

1.2 滑块条与信号绑定

滑块条同样可以与信号绑定,在某些时候我们希望只需要变动滑块条的位置就能实现特定的功能,此时就需要对特定的滑块条绑定信号与槽函数,如下图所示,我们在左侧调色板位置放置四个滑块条用于调整颜色参数,在右侧放置一个textEdit编辑框,当读者滑动滑块时右侧则出现相对应的颜色。

首先,我们以第一个红色Horizontal Slider滑块条为例,通过右键选中转到槽,选择valueChaged(int)这个槽函数,并实现如下逻辑,在代码中我们分别读入四个进度条的默认值,并率先设置到textEdit组件上,接着就是对textEdit底色的设置。

// 变色槽函数
void MainWindow::on_SliderRed_valueChanged(int value)
{
Q_UNUSED(value);
QColor color;
int R=ui->SliderRed->value(); // 读取SliderRed的当前值
int G=ui->SliderGreen->value(); // 读取 SliderGreen 的当前值
int B=ui->SliderBlue->value(); // 读取 SliderBlue 的当前值
int alpha=ui->SliderAlpha->value();// 读取 SliderAlpha 的当前值
color.setRgb(R,G,B,alpha); // 使用QColor的setRgb()函数获得颜色 QPalette pal=ui->textEdit->palette(); // 获取textEdit原有的 palette
pal.setColor(QPalette::Base,color); // 设置palette的基色(即背景色)
ui->textEdit->setPalette(pal); // 设置为textEdit的palette,改变textEdit的底色
}

接着,我们在MainWindow构造函数上分别绑定三个信号,将 SliderGreenSliderBlueSliderAlpha 与第一个滑块条 SliderRead 关联起来,并全部绑定到on_SliderRed_valueChanged槽函数上,此时的实现效果为,当其他三个选择条数值改变时,同样会触发on_SliderRed_valueChanged槽函数执行变色。

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this); QObject::connect(ui->SliderRed,SIGNAL(valueChanged(int)),this,SLOT(on_SliderRed_valueChanged(int)));
QObject::connect(ui->SliderGreen,SIGNAL(valueChanged(int)),this,SLOT(on_SliderRed_valueChanged(int)));
QObject::connect(ui->SliderBlue,SIGNAL(valueChanged(int)),this,SLOT(on_SliderRed_valueChanged(int)));
QObject::connect(ui->SliderAlpha,SIGNAL(valueChanged(int)),this,SLOT(on_SliderRed_valueChanged(int)));
}

至此,读者可自行拖拽滑块条以获得不同的配色方案,如下图所示,这里需要提醒读者默认滑块条是0-99而颜色的长度为0-255读者需要自行调整滑块条的颜色值,以获取更多的配色方案。

C++ Qt开发:Slider滑块条组件的更多相关文章

  1. 第二百二十节,jQuery EasyUI,Slider(滑动条)组件

    jQuery EasyUI,Slider(滑动条)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Slider(滑动条)组件的使用方法,这个 ...

  2. Slider( 滑动条) 组件

    本节课重点了解 EasyUI 中 Slider(滑动条)组件的使用方法,这个组件依赖于Draggable(拖动)组件. 一. 加载方式//class 加载方式<input class=" ...

  3. 【Android 应用开发】 自定义 圆形进度条 组件

    转载著名出处 : http://blog.csdn.net/shulianghan/article/details/40351487 代码下载 : -- CSDN 下载地址 : http://down ...

  4. 基于QT开发的第三方库

    基于Qt开发的第三方库 分类: Qt2014-02-12 11:34 1738人阅读 评论(0) 收藏 举报 QT第三方库   目录(?)[+]   文章来源:http://blog.csdn.net ...

  5. Qt基础学习---滑动条之QSlider

    Qt滑动条基本用法: //mydialog.h #ifndef MYDIALOG_H #define MYDIALOG_H #include <QDialog> class QLineEd ...

  6. python 全栈开发,Day58(bootstrap组件,bootstrap JavaScript 插件,后台模板,图表插件,jQuery插件库,Animate.css,swiper,运行vue项目)

    一.bootstrap组件 无数可复用的组件,包括字体图标.下拉菜单.导航.警告框.弹出框等更多功能. 组件和插件的区别? 插件:一个功能,比如js文件 组件:html css js 组件包含插件 面 ...

  7. Qt开发环境下载和安装

    Qt是跨平台的图形开发库,目前由Digia全资子公司 Qt Company 独立运营,官方网址: http://www.qt.io/ 也可以访问Qt项目域名:http://qt-project.org ...

  8. QT开发环境的建立以及QTE4.6.3、tslib1.4的移植过程

    1.首先是建立Linux开发环境1.1.在windowsXP下安装博创公司提供的虚拟机软件VMware Workstation,版本为VMware-workstation-full-7.0.1-227 ...

  9. 关于 Windows 下 Qt 开发,这个问题必须要搞清楚!

    小伙伴们,大家好,小北师兄又来喂饭啦,从上次写完<一个例子让你秒懂 Qt Creator 编译原理>后,师兄对于 Qt 的一些环境配置有了更深的理解,这对师兄进行 Qt 的后续学习起到了很 ...

  10. win使用MSYS2安装Qt开发环境

    原文链接 MSYS2 下载地址: pacman的具体用法 有pacman的具体使用方法.我们首先对系统升级 我们首先对系统升级 pacman -Syu 就会检测整个系统可以升级的组件,并自动下载安装, ...

随机推荐

  1. 循环神经网络RNN完全解析:从基础理论到PyTorch实战

    在本文中,我们深入探讨了循环神经网络(RNN)及其高级变体,包括长短时记忆网络(LSTM).门控循环单元(GRU)和双向循环神经网络(Bi-RNN).文章详细介绍了RNN的基本概念.工作原理和应用场景 ...

  2. 通过Nginx权限认证拦截资源

    nginx认证转发模块 Module ngx_http_auth_request_module   详细参考官网 ngx_http_auth_request_module (nginx.org) 模块 ...

  3. ctypes使用浅谈

    什么是ctypes: ctypes 是 Python 的一个标准库,用于与 C 语言进行交互.它提供了一组工具和函数,可以方便地调用动态链接库(DLL)或共享对象(SO)中的 C 函数,并处理 C 数 ...

  4. 想让你的工作轻松高效吗?揭秘Java + React导出Excel/PDF的绝妙技巧!

    前言 在B/S架构中,服务端导出是一种高效的方式.它将导出的逻辑放在服务端,前端仅需发起请求即可.通过在服务端完成导出后,前端再下载文件完成整个导出过程.服务端导出具有许多优点,如数据安全.适用于大规 ...

  5. RabbitMQ 如何实现延迟队列?

    延迟队列是指当消息被发送以后,并不是立即执行,而是等待特定的时间后,消费者才会执行该消息. 延迟队列的使用场景有以下几种: 未按时支付的订单,30 分钟过期之后取消订单. 给活跃度比较低的用户间隔 N ...

  6. Flask框架——模板、数据库ORM

    文章目录 1 模板 1 重定向 1.1 什么是重定向? 1.2 为什么要有重定向? 1.3 如何使用重定向? 1.3.1 暂时性重定向(代码实例): 1.3.2 永久性重定向(代码实例) 2 jinj ...

  7. svn: E200007: Retrieval of mergeinfo unsupported解决

     http://blog.csdn.net/intlgj/article/details/39080605 svn: E200007: Retrieval of mergeinfo unsupport ...

  8. Go 复合类型之切片类型介绍

    Go 复合类型之切片类型 目录 Go 复合类型之切片类型 一.引入 二.切片(Slice)概述 2.1 基本介绍 2.2 特点 2.3 切片与数组的区别 三. 切片声明与初始化 3.1 方式一:使用切 ...

  9. CSP-J 2022 游记

    10.9 早上睡到 7:00. 上午继续学习 Vim,学习哈希表. 10.11 白天线段树,区间加从六参改成四参就过了 晚上模拟赛,感觉良好 10.16 膜你赛,std变量命名毒瘤. 想用 geogb ...

  10. JS个人总结(2)

    1.null被认为是一个空的对象引用..如果定义的变量准备将来用保存对象,最好将该变量初始化null.即 var x=null;这样只有检查null值就可以知道这个变量是否已经保存了一个对象.. 2. ...