Qt 重写QSlider简单实现滑动解锁控件(指定百分比回弹效果)

这篇具有很好参考价值的文章主要介绍了Qt 重写QSlider简单实现滑动解锁控件(指定百分比回弹效果)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

组件效果图:

Qt 重写QSlider简单实现滑动解锁控件(指定百分比回弹效果),Qt 组件扩展开发合集,qt,开发语言,c++,Qt

应用场景: 

用于滑动解锁相关场景,Qt的控件鼠标监听机制对于嵌入式设备GUI可触摸屏依旧可用。

实现方式:

主要是通过继承QSlider以及搭配使用QStyleOptionSlider来实现效果。

注意细则:

QStyleOptionSlider是用于定制空白区域是否可移动滑块,根据需求可舍弃。

组件代码:

PS:代码效果也就是如图所示的效果,至于样式或者其他事件机制,切换逻辑就根据自己需求扩展。文章来源地址https://www.toymoban.com/news/detail-729543.html

#ifndef QSLIDERCOMPONENT_H
#define QSLIDERCOMPONENT_H

#include <QObject>
#include <QWidget>
#include <QSlider>

class QSliderComponent : public QSlider
{
    Q_OBJECT
public:
    explicit QSliderComponent(QWidget *parent = nullptr);

protected:
    void mousePressEvent(QMouseEvent *ev) override;
};

#endif // QSLIDERCOMPONENT_H
#include "qslidercomponent.h"
#include <QStyleOptionSlider>
#include <QMouseEvent>
#include <QDebug>

QSliderComponent::QSliderComponent(QWidget *parent) : QSlider(parent)
{

}

void QSliderComponent::mousePressEvent(QMouseEvent *ev)
{
    QStyleOptionSlider *QSOslider = new QStyleOptionSlider();
    this->initStyleOption(QSOslider);
    auto pressedControl = this->style()->hitTestComplexControl(QStyle::CC_Slider, QSOslider, ev->pos(), this);
    if(pressedControl == QStyle::SC_SliderGroove)
    {
        ev->accept();
    }
    else
        QSlider::mousePressEvent(ev);
}

使用示例:

    sliderControl = new QSliderComponent(this);
    sliderControl->resize(250, 42);
    sliderControl->move(35, 172);
    sliderControl->setRange(0, 100);
    sliderControl->setOrientation(Qt::Horizontal);
    sliderControl->setStyleSheet("QSlider::groove:horizontal{ height:30px; border: 1px solid grey; border-radius: 5px;}"
                                 "QSlider::handle:horizontal{ width:50px; background-color: blue; border-radius: 5px;}");
                                // "QSlider::handle:horizontal{ width:50px; border-image:url(:/page/unlock_screen_arrow.png)}");

    sliderControl->show();


    # 具体的逻辑添加,滑块释放以及是否达到指定某个值,进而处理某些业务
    connect(sliderControl, &QSliderComponent::sliderReleased, [=](){
        if(sliderControl->value() != 100)
            sliderControl->setValue(0);
//        else
//            emit unlockScreen();
    });

到了这里,关于Qt 重写QSlider简单实现滑动解锁控件(指定百分比回弹效果)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt QSlider样式

    滑块控件QSlider,如果设置的垂直样式,其进度颜色和剩余颜色,刚好和横向样式的颜色相反的,不确定这个是否是Qt的BUG,Qt456都是这个现象 推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linu

    2024年02月10日
    浏览(34)
  • QT入门Input Widgets之QSlider

    目录 一、界面布局功能 1、界面位置介绍 2、控件界面基本属性 2.1horizontalSlider界面属性 2.2设置步进 2.3打开或关闭滑块跟踪(setTracking) 二、属性功能介绍 1、常用信号 2、调用信号 3、鼠标点击QSlider滑块定在点击位置 三、Demo展示  此文为作者原创,创作不易,转载请标明出

    2024年02月03日
    浏览(42)
  • Unity实现一个可扩展的UGUI无限滑动列表控件

    12月20日新增 增加一个可收缩的滑动列表,适用于游戏中的任务系统,成就等 使用说明 创建时需要两个模板slot,一个是button,另一个则是btn下显示的cell 配置如下图添加 ExpandableView 脚本,新增的IsDefaultExpand用来控制是否展开 11月28日新增 增加可调节的顶部间隙和左侧间隙 采

    2024年01月19日
    浏览(41)
  • 【QT数字图像处理】(三)QSlider滑块学习

    实验二的要求是编程实现RGB彩色空间到HSV彩色空间的转换,并通过调整H、S、V实现图像色度、色饱和度和亮度的调节。在开始实验二之前,我们先来学习一下关于QSlider滑块的操作。 最后要实现的效果如下:用3个滑动条分别来调节RGB三个颜色分量的大小,并显示到左侧各自的

    2024年02月13日
    浏览(30)
  • Android应用-Flutter实现丝滑的滑动删除、移动排序等-Dismissible控件详解

    Dismissible 是 Flutter 中用于实现可滑动删除或拖拽操作的一个有用的小部件。主要用于在用户对列表项或任何其他可滑动的元素执行删除或拖动操作时,提供一种简便的实现方式。 列表项删除: 允许用户在列表中通过滑动手势删除某个项。 左右滑动: 提供可自定义的背景,当

    2024年02月04日
    浏览(49)
  • Flutter组件-ListView滑动到指定位置(SingleChildScrollView 实现锚点效果)

    ListView 组件默认内容比较多的时候具有延迟加载的特性。  SingleChildScrollView 不支持基于 Sliver 的延迟实例化模型,也就是使用 SingleChildScrollView  默认没有延迟加载的特性。  SingleChildScrollView 类似于 Android 中的 ScrollView,它只能接收一个子组件,由于默认没  有延迟加载

    2024年02月11日
    浏览(37)
  • QT桌面(实现界面的滑动切换)

    在ARM Linux中使用QT如何实现滑动翻页切换界面的效果呢?在ARM中是没有自带的鼠标的,那么我们如何实现滑动翻页呢?经过测试发现在ARM中运行QT程序也是可以通过重写鼠标事件来捕获触屏动作的,在ARM中滑动屏幕被定义成了鼠标左键事件,那么这样就有思路了, 重写鼠标事

    2024年02月06日
    浏览(43)
  • 滑动折叠效果简单实现

    绿色为标题,滑动时始终不会被折叠、不会滑动。红色和黑色会在滑动的时候折叠,先折叠红色,在折叠黑色。

    2024年02月11日
    浏览(37)
  • WPF --- 如何重写WPF原生控件样式

    上一篇中 WPF --- 重写DataGrid样式,因新产品UI需要,重写了一下微软 WPF 原生的 DataGrid 的样式,包含如下内容: 基础设置,一些基本背景色,字体颜色等。 滚动条样式。 实现圆角表格,重写表格的一些基础样式,例如 CellStyle , RowStyle , RowHeaderStyle , ColumnHeaderStyle 等。 重写过

    2024年02月05日
    浏览(75)
  • Qt 自定义窗口的标题栏,重写鼠标事件实现,关闭隐藏,最大化/最小化,重写窗口事件函数,实现鼠标选中边框拉大拉小,双击标题栏切换窗口最大化和最小化

    Qt 自定义窗口的标题栏,重写鼠标事件实现,关闭隐藏,最大化/最小化,重写窗口事件函数,实现鼠标选中边框拉大拉小,双击标题栏切换窗口最大化和最小化 1、main.cpp 2、widget.h 3、widget.cpp 4、效果展示 5、完成

    2024年02月16日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包