QT6实现按钮双击事件

这篇具有很好参考价值的文章主要介绍了QT6实现按钮双击事件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实现思路:利用事件过滤器实现按钮双击功能,主要是通过调用installEventFilter函数和重写事件eventFilter函数实现。

 文章来源地址https://www.toymoban.com/news/detail-659865.html

1、创建项目

qt 按钮点击事件,qt,c++,ui

启动Qt Creator,在主菜单的[文件]下,打开[新建文件或项目]菜单,弹出新建文件或项目对话框,创建Qt Widgets Application 项目,在Class Information步骤中Base class 选择Qwidget,其他基本默认即可。

qt 按钮点击事件,qt,c++,ui

在界面增加1个列表控件和1个按钮控件,为按钮添加单机事件,界面设计如上所示。

 

2、代码

widget.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Widget</class>
 <widget class="QWidget" name="Widget">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>565</width>
    <height>424</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Widget</string>
  </property>
  <widget class="QPushButton" name="btnDoubleTest">
   <property name="geometry">
    <rect>
     <x>430</x>
     <y>20</y>
     <width>101</width>
     <height>31</height>
    </rect>
   </property>
   <property name="text">
    <string>测试按钮</string>
   </property>
  </widget>
  <widget class="QListWidget" name="listWidget">
   <property name="geometry">
    <rect>
     <x>10</x>
     <y>10</y>
     <width>401</width>
     <height>401</height>
    </rect>
   </property>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

   bool eventFilter(QObject *watched, QEvent *event);

private slots:
   void on_btnDoubleTest_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "./ui_widget.h"

#include <QMouseEvent>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    ui->btnDoubleTest->installEventFilter(this);
}

Widget::~Widget()
{
    delete ui;
}

bool Widget::eventFilter(QObject *watched, QEvent * event)
{
    if(event->type()==QEvent::MouseButtonDblClick)
    {
        QMouseEvent * e = static_cast<QMouseEvent *>(event);

        if(e->button() == Qt::LeftButton)
        {
             if(watched==ui->btnDoubleTest)
                 ui->listWidget->addItem(QString("双击事件"));

             return true;
        }
    }

    return QWidget::eventFilter(watched, event);
}

void Widget::on_btnDoubleTest_clicked()
{
    ui->listWidget->addItem(QString("单击事件"));
}

 

3、运行效果

qt 按钮点击事件,qt,c++,ui

运行效果如上所示,单击按钮时触发单击事件,双击按钮时触发双击事件。

 

 

 

 

 

 

 

 

 

 

 

 

到了这里,关于QT6实现按钮双击事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • qt 实现点击按钮显示弹窗,再次点击按钮或点击弹窗之外的区域,弹窗消失。

    LumenWidget 为主界面 setting_ 为弹窗界面 tbn_map_setting 为点击按钮 弹窗界面要先设置如下属性 第一步 主界面增加事件过滤器 第二步 将此事件过滤器加入到全部控件中 在主界面的构造函数加入以下代码 或 第三步 设置按钮点击槽函数,本文为 tbn_map_setting

    2024年02月11日
    浏览(48)
  • Qt Button实现按钮长按事件

    最近项目遇到一个需求,通过鼠标按钮长按一直发数据,鼠标松开立即离开。 想了一会儿大概有了几种思路(仅仅是思路,不一样可以实现) 1.重写鼠标事件,通过鼠标检测实现。 2.定时器触发实现。 3.通过某一个参数或者勾选命令实现。 QT按钮类及定时器应用 【QT】定时器

    2024年02月08日
    浏览(55)
  • QT学习12:QLabel实现点击事件

    主要是通过安装过滤器,实现点击事件。 事件过滤器的操作: 首先给需要添加事件过滤器的部件 注册监听对象 ; 对象名-installEventFilter(true); 重写 eventFilter(QObject *obj, QEvent *event) 函数进行处理。

    2024年02月13日
    浏览(62)
  • Qt系列——点击按钮关闭窗口的三种实现方式,附源码

    主要实现了点击QPushButton按钮,关闭窗口的功能。 简单设计界面如下,按钮名称如图中右侧红框中内容 源程序连接

    2024年02月11日
    浏览(49)
  • Vue中使用element-ui 给按钮绑定一个单击事件,实现点击按钮就弹出一个dialog对话框

    1.需求描述 想要实现点击一个按钮就弹出一个对话框,在对话框中可输入数据进行提交,在点击取消时对话框关闭 2.功能实现 1.创建按钮 在element中把找到按钮的代码放到div里 2.创建对话框 在element中找到dialog对话框对应的代码,把代码粘贴到对应的位置 3.对话框与按钮的绑定

    2024年01月18日
    浏览(69)
  • Python Qt6快速入门-事件处理

    Qt GUI应用程序的核心是 QApplication 类。 每个GUI应用程序都需要一个并且只有一个 QApplication 对象才能运行。 该对象包含应用程序的事件循环——控制所有用户与 GUI 交互的核心循环。

    2024年02月15日
    浏览(40)
  • Qt6使用QChartView类与鼠标事件实现波形的缩放、平移、坐标轴单轴缩放与鼠标悬停显示点的数据

            说在前面,本人也是近段时间刚开始学习Qt,实现上述功能的方法可能并不是最优,写此篇文章也是记录下学习的过程,也与大家分享一下。(在此先描述,后面会附上代码)(前面说的会比较基础)         首先,要使用QChartView类得现在.pro文件中加入:(得确保

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

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

    2024年02月16日
    浏览(64)
  • Qt6 Qt Quick UI原型学习QML第二篇

    元素可以分为 视觉元素和非视觉元素 。视觉元素(如Rectangle)具有几何形状,并且通常在屏幕上呈现一个区域。非可视元素(如Timer)提供一般功能,通常用于操作可视元素。 目前,我们将关注基本的视觉元素,例如 Item, Rectangle, Text, Image和MouseArea 。但是,通过使用Qt Quick Contro

    2024年02月16日
    浏览(35)
  • Qt6 Qt Quick UI原型学习QML第六篇

    import QtQuick 2.12 :导入QtQuick模块的版本2.12,用于创建Qt快速应用程序的用户界面。 import QtQuick.Window 2.12 :导入QtQuick.Window模块的版本2.12,用于创建窗口对象。 import QtQuick.Controls 2.12 :导入QtQuick.Controls模块的版本2.12,用于创建用户界面控件。 Window {} :定义了一个窗口对象,

    2024年02月16日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包