Qt自定义按键实现长,短按

news2024/11/25 4:58:25

本文介绍Qt自定义按键实现长,短按。

Qt触摸屏应用有时会涉及到触摸屏按钮长,短按操作,如长按实现关机操作,本文基于普通QPushButton为基类,自定义按键实现长,短按操作。

1.定义新类

这里以QPushButton为基类,自定义一个新类“CustomButton”,参考代码如下:

1)头文件

#ifndef CUSTOMBUTTON_H
#define CUSTOMBUTTON_H

#include <QWidget>
#include <QElapsedTimer>
#include <QEvent>
#include <QPushButton>

class CustomButton : public QPushButton
{
    Q_OBJECT
public:
    explicit CustomButton(QWidget *parent = nullptr);

signals:
    void shortPressed(void);
    void longPressed(void);

public slots:

protected:
    bool event(QEvent *event) override;

private:
    QElapsedTimer pressTime;
    bool bLongPressed;
};

#endif // CUSTOMBUTTON_H

类中声明了2个信号,shortPressed()和longPressed()信号。

2)源文件

若想使能触摸事件,需要在构造函数中设置“setAttribute(Qt::WA_AcceptTouchEvents);”。

#include "custombutton.h"
#include <QMouseEvent>
#include <QDebug>

CustomButton::CustomButton(QWidget *parent) : QPushButton(parent)
{
    setAttribute(Qt::WA_AcceptTouchEvents);

    bLongPressed = false;
}

bool CustomButton::event(QEvent *event)
{
    if (event->type() == QEvent::TouchBegin) {
        setPalette(QPalette(Qt::red));
        pressTime.start();
        bLongPressed = false;
        return true;
    } else if (event->type() == QEvent::TouchUpdate) {
        if (!bLongPressed && (pressTime.elapsed() >= 3000)) {
            bLongPressed = true;
            Q_EMIT longPressed();
        }
        return true;
    } else if (event->type() == QEvent::TouchEnd) {
        setPalette(QPalette(Qt::white));
        if (!bLongPressed) {
            Q_EMIT shortPressed();
        }
        return true;
    } else {

    }

    return QPushButton::event(event);
}

注意:在接收到触摸事件后,需要返回“true”,否则后续触摸事件无法接收。

2.控件提升

在界面中放置一个普通的PushButton,右键选择“Promoted Widgets”,添加刚才新建的类。

在界面函数中连接新类中的shortPressed()和longPressed()信号到相应的槽函数,即可实现相应的长,短按功能。

缺陷:长按操作时间不准,有时长按时间较短,有时较长。

总结,本文介绍了Qt自定义按键实现长,短按。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2125144.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电商|基于java的农业电商系统(源码+数据库+文档)

农业电商系统 目录 基于java的农业电商系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 前台&#xff1a; 后台&#xff1a; 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️…

ADC模数转换

ADC模数转换 ADC简介逐次逼近型ADC简介STM32的ADC外设 ADC的基本结构ADC输入通道规则组的转换模式单次转换&#xff0c;非扫描模式连续转换&#xff0c;非扫描模式单次转换&#xff0c;扫描模式连续转换&#xff0c;扫描模式 触发控制数据对齐转换时间校准可输出不同电压的电路…

ElasticSearch精要

1、什么是ElasticSearch&#xff1a; Elasticsearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎&#xff0c;每个字段都被索引并可被搜 索&#xff0c;可以快速存储、搜索、分析海量的数据。 集群&#xff1a;是一个或多个服务器的集合&#xff0c;共同保存数据并提供…

Assignment

1 Statement 里面包含了Expression。 对Statement 的interpret 里面包含了 对Expression 的interpret。 2 Expression 可以下降出Assignment 3 单个token前瞻递归下降解析器在解析完左侧操作数并偶然发现 之前&#xff0c;无法看清是否在解析赋值。毕竟&#xff0c;在解析完…

C语言补习课——文件篇

来源&#xff1a;黑马程序员 第157讲 C语言操作文件概述 读取文件&#xff1a;输入流 写文件&#xff1a;输出流 读写的方向判断取决与参照&#xff0c;一般我们站在程序的角度判断读写方向。 第158讲 路径 基本概念 路径就是指文件在电脑中的位置&#xff0c;eg&#xf…

下班后做小红书第7个月,涨粉7w,累计变现5w+,我只用到五个点

下班后做小红书第7个月&#xff0c;涨粉7w&#xff0c;累计变现5w&#xff0c;经常有粉丝问我怎么做博主&#xff0c;甚至想找我付&#x1f4b0;Z询&#xff0c;因为有大家才有我的今天&#xff0c;所以干货直接分享给大家~ 我能快速涨粉的秘籍&#xff0c;其实就是“抄”&…

有关采用parallelStream并行流处理List并使用自定义线程池和lettuce redis客户端一起使用的问题

在使用parallelStream进行处理list时&#xff0c;如不指定线程池&#xff0c;默认的并行度采用cpu核数进行并行&#xff0c;这里采用ForJoinPool来指定线程池&#xff0c;但循环中使用了luttuce 来获取redis的key时&#xff0c;出现没有控制住线程池的线程数问题。具体上代码。…

第二证券:如何选出即将暴涨的股票?

选出行将暴升的股票是一个复杂且风险较高的进程&#xff0c;由于股市的波动受多种要素影响&#xff0c;包含但不限于公司业绩、商场心情、微观经济环境、方针变化等。以下是一些可能有助于选出潜在暴升股票的方法和建议&#xff1a; 1、出现严重利好消息 当股票出现严重利好消…

Nginx文件服务器搭建

1、安装依赖、关闭防火墙 [rootlocalhost ~]# yum install wget gcc gcc-c pcre pcre-devel openssl openssl-devel zlib zlib-devel [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# systemctl disable firewalld 2、创建nginx启动用户 注意&#xff1a;会在…

Windows与linux中docker的安装与使用

windos中安装使用docker 下载Docker_Desktop 安装包进入docker官网下载Docker_Desktop&#xff1a; https://www.docker.com/启用wsl 我们搜索“启用或关闭Windows功能”&#xff0c;打开后勾选适用于Linux的Windows 子系统 Docker_Desktop设置 出现Docker Engine stopp…

vue3 el-tabs 和 el-dropdown 结合实现 tagsView 标签导航

大致思路 所谓 tagsView 可以分成两部分来去看&#xff1a; tagsview 那怎么分开看呢&#xff1f; 首先我们先来看 tags&#xff1a; 所谓 tgas 指的是&#xff1a;位于 appmain 之上的标签 那么现在我们忽略掉 view&#xff0c;现在只有一个要求&#xff1a; 在 view 之…

开源 AI 智能名片 S2B2C 商城小程序相关角色的探索

摘要&#xff1a;本文围绕开源 AI 智能名片 S2B2C 商城小程序的决策产品方向&#xff0c;基于两个原则展开研究。原则一是根据该产品方向尽可能多地寻找相关角色&#xff0c;原则二是以探索痛点而非销售为核心。同时确保识别出的角色覆盖价值使用者、价值传递者与价值生产者三类…

揭秘团购奇迹:如何在一个月内实现超过600万的盈利

你是否曾经对那些看似亏损的商业机会感到好奇&#xff0c;却意外地发现它们在短短一个月内能为你带来超过六百万的收益&#xff1f;这个令人震惊的数字&#xff0c;是否激起了你的好奇心和探索欲&#xff1f;如果你愿意深入了解我们今天要分享的内容&#xff0c;我坚信你也能找…

零基础小白能学网络安全吗?

最近看到很多朋友都在问“零基础能学网络安全吗&#xff1f;” 今天整一篇帮大家分析一下&#xff0c;希望对你有帮助。 首先&#xff0c;问出这个问题的朋友&#xff0c;我大致判断一下&#xff0c;你对网络安全并不了解&#xff0c;只是单纯看到某个视频某篇文章&#xff0…

想从事FPGA需要学好哪些知识?

想从事FPGA需要学好&#xff1a; 1、数字电路基础 2、微机原理&#xff0c;汇编语言&#xff08;推荐王克义老师的《微机原理&#xff08;第2版&#xff09;》&#xff09;或计算机体系结构或单片机原理&#xff1b; 3、C/C&#xff0b;&#xff0b;语言&#xff1b; 4、Ve…

免费且实用:UI设计常用的颜色参考网站和一些Icon设计网站

用心去分享&#xff01;请给我点个关注和点赞收藏&#xff01;谢谢各位努力的人才&#xff01; 1.在UI设计的时候&#xff0c;没有灵感&#xff0c;怎么办&#xff1f;可以参考这个网站&#xff08;需要魔法能量&#xff09; 网址如下&#xff1a; Color Hunt - Color Palette…

windows中多ping网络ICMP

之前没搞过ICMP,第一次弄&#xff0c;遇到好多坑&#xff0c;其中在接收ICMP消息时无法指定ip这个坑困扰了好久&#xff0c;最后在网上找到一种解决方法&#xff1b;直接看效果吧&#xff01;&#xff01; 其中我获取ip状态直接扔到线程池里面处理的 struct DevicePingMsg {D…

OpenAI新模型“Strawberry“蓄势待发:会思考的AI即将登场?

OpenAI新模型"Strawberry"蓄势待发&#xff1a;会思考的AI即将登场&#xff1f; OpenAI的神秘大模型"草莓"&#xff08;Strawberry&#xff0c;之前称为Q*&#xff09;可能要提早亮相了。这款AI不仅能思考&#xff0c;还可能彻底改变我们与人工智能互动的方…

果蔬识别系统性能优化之路(三)

目录 前情提要遗留问题 解决方案优化查询速度优化ivf初始化的速度 下一步 前情提要 果蔬识别系统性能优化之路&#xff08;二&#xff09; 遗留问题 优化同步速度&#xff0c;目前大约30秒&#xff0c;不是一个生产速度 这次来解决遗留问题 通过console&#xff0c;发现两个…

【F178】基于Springboot+vue实现的智能无人仓库管理

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 项目描述 互联网发展至今&#xff0c;无论是其理论还是技术都已经…