精华内容
下载资源
问答
  • 本文首发于本人CSDN博客,禁止转载版权...原文链接:https://blog.csdn.net/NMG_CJS/article/details/102653441​blog.csdn.net0、前言在Qt中如果想重新实现某一事件(比如鼠标双击事件)有两种方式:重载该类,重新...

    本文首发于本人CSDN博客,禁止转载

    版权声明:本文为CSDN博主「NMG_CJS」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:

    https://blog.csdn.net/NMG_CJS/article/details/102653441blog.csdn.net

    0、前言

    在Qt中如果想重新实现某一事件(比如鼠标双击事件)有两种方式:

    1. 重载该类,重新实现该事件函数
    2. 使用事件过滤器

    1、为QTabWidget重新实现鼠标双击事件

    废话不多说先上效果图,双击QTabWidget空白处会新建标签页,下图是我自己写的文本编辑器

    f0f790ee1cf6f210131c9ba0968513b8.gif

    1.1 、第一种实现方式(重载)代码:

    // 首先我们继承QTabWidget
    class MyTabWidget : public QTabWidget
    {
    Q_OBJECT
    protected:
        // 然后重新实现鼠标双击事件
        void mouseDoubleClickEvent(QMouseEvent* e);
    public:
        MyTabWidget(QWidget* parent = nullptr) : QTabWidget(parent){ };
    };
    
    void MyTabWidget::mouseDoubleClickEvent(QMouseEvent* e)
    {
        // 你自己期望实现的功能,在这里我的实现是新建一个标签页以及新的文本编辑栏
    }
    

    1.2、第二种实现方式(事件过滤器)代码:

    QTabWidget *fileTab;
    fileTab = new QTabWidget(this);
    fileTab->installEventFilter(this);
    
    bool MainWindow::eventFilter(QObject *watched, QEvent *event)
    {
        if (watched == fileTab) // 你要过滤的对象
            if (event->type() == QEvent::MouseButtonDblClick) { // 你要过滤的对象的事件类型
                // 你自己期望实现的功能,在这里我的实现是新建一个标签页以及新的文本编辑栏
                return true; // 注意这里一定要返回true,表示你要过滤该事件原本的实现
            }
        return false; // 返回false表示不过滤,还按默认的来
    }
    

    附录

    以上完整代码在本人github中,点击获取源代码,记得点个星哦

    展开全文
  • from PyQt5.QtWidgets import QComboBox from PyQt5.QtCore import pyqtSignal class MyComboBox(QComboBox): clicked = pyqtSignal() #创建一个信号 def showPopup(self): #重写showPopup函数 self

    一、自定义MyComboBox

    # MyComboBox.py
    from PyQt5.QtWidgets import QComboBox
    from PyQt5.QtCore import pyqtSignal             
    
    class MyComboBox(QComboBox):
        clicked = pyqtSignal()          #创建一个信号
        def showPopup(self):            #重写showPopup函数
            self.clicked.emit()         #发送信号
            super(MyComboBox, self).showPopup()     # 调用父类的showPopup()
    

    二、使用MyComboBox创建窗口空间

    # test_ui.py
            self.PrintersList = MyComboBox(self.groupBox)	# 修改后
            # self.PrintersList = QtWidgets.QComboBox(self.groupBox) # 修改前
    

    三、main函数中对clicked 信号进行绑定

    # main_loop.py
    
        self.PrintersList.clicked.connect(self.scan_printer_list_slot)     		# 信号与槽函数的绑定
    
    	# 槽函数的实现
        def scan_printer_list_slot(self):
    	     print("扫描打印机并刷新列表")
    
    展开全文
  • from PyQt5.QtWidgets import QComboBox from PyQt5.QtCore import pyqtSignal class MyComboBox(QComboBox): clicked = pyqtSignal() #创建一个信号 def showPopup(self): #重写showPopup函数 se

    一、自定义MyComboBox

    # MyComboBox.py
    from PyQt5.QtWidgets import QComboBox
    from PyQt5.QtCore import pyqtSignal             
    
    class MyComboBox(QComboBox):
        clicked = pyqtSignal()          #创建一个信号
        def showPopup(self):            #重写showPopup函数
            self.clicked.emit()         #发送信号
            super(MyComboBox, self).showPopup()     # 调用父类的showPopup()

    二、使用MyComboBox创建窗口空间

    # test_ui.py
            self.PrintersList = MyComboBox(self.groupBox)	# 修改后
            # self.PrintersList = QtWidgets.QComboBox(self.groupBox) # 修改前

    三、main函数中对clicked 信号进行绑定

    # main_loop.py
    
        self.PrintersList.clicked.connect(self.scan_printer_list_slot)     		# 信号与槽函数的绑定
    
    	# 槽函数的实现
        def scan_printer_list_slot(self):
    	     print("扫描打印机并刷新列表")

     

    展开全文
  • QT按钮鼠标点击触发阴影效果 1、 给8个按钮 安装 事件过滤器 eventFilter ui->blackBtn_w->installEventFilter(this); 8个按钮都添加上 2、 在主窗口 某某某.h 头文件中添加 bool eventFilter(QObject *target...

    QT按钮鼠标点击触发阴影效果(一)
    要求: 给N个不同的按钮,添加鼠标点击后,触发按钮边框加粗、增加阴影效果。
    以下方法的缺点:按钮很多就很麻烦,而且点击到别的组件就取消阴影效果了; 下次有空再优化 :)
    淡蓝色阴影,加粗边框

    试了setstylesheet没有阴影效果,也没搜到。
    QPushButton:hover,pressed也不太行,checked试了没反应不知道为啥
    1、 给N个按钮 安装 事件过滤器 eventFilter
    ui->btn1->installEventFilter(this);
    8个按钮都添加上
    2、 在主窗口 某某某.h 头文件中添加
    bool eventFilter(QObject *target, QEvent *e);

    3、 在主窗口 某某某.cpp 中添加 事件过滤器代码
    先添加#include 阴影效果

    不要在函数内定义,就复制到 mainwindow那个大括号之外
    最后一句return QMainWindow 某某某 注意不要用错类了。

    bool MainWindow::eventFilter(QObject *target, QEvent *e)
    {
        QGraphicsDropShadowEffect *shadow_effect = new QGraphicsDropShadowEffect(this);//设置阴影效果
        shadow_effect->setOffset(0, 0);
        //阴影颜色
        shadow_effect->setColor(QColor(135,206,250,222));
        //阴影半径
        shadow_effect->setBlurRadius(100);
        QGraphicsDropShadowEffect *no_shadow_effect = new QGraphicsDropShadowEffect(this);//设置无阴影效果,不知道有没有函数直接disabled,就这样直接设置看不见。。。
        no_shadow_effect->setOffset(0, 0);
        //阴影颜色
        no_shadow_effect->setColor(QColor(255,255,255, 127));
        //阴影半径
        no_shadow_effect->setBlurRadius(0);
    
        if(target==ui->Btn_1)   //
        {
            if(e->type()==QEvent::MouseButtonPress)    //选中按钮1
            {
                ui->Btn_1->setStyleSheet("background-color:black;border-radius:10px;border:4px solid SkyBlue;");//设置按钮1点击后的样式
                ui->Btn_1->setGraphicsEffect(shadow_effect);//设置阴影
                ui->Btn_2->setGraphicsEffect(no_shadow_effect);//其他按钮不显示阴影
                //N个按钮就重复N次,很麻烦
            }
            else if (e->type()==QEvent::FocusOut)     //未选中按钮1
            {
    
                ui->Btn_1->setGraphicsEffect(no_shadow_effect);//设置无阴影效果
                ui->Btn_1->setStyleSheet("background-color:black;");//设置回原来的样式
            }
        }
        
        return QMainWindow::eventFilter(target, e);
    }
    
    
    展开全文
  • 基于窗体的应用程序都是事件(event)驱动的,鼠标单击、按下某个按键、重绘某个组件、最小化窗口都会产生相应的事件,应用程序对这些事件作出相应的处理以实现程序的功能。常用的特定事件处理函数及方法示例代码...
  • 1、需求 通过手写笔,实现在场景中的自动点击画图 2、方案 ...1) 发送事件wid不能是view,不然场景事件不会触发,需要改为view->viewport() 2) 代码发送鼠标事件,某些场景中需要增加sleep延迟 ...
  • Qt中的鼠标事件

    2018-01-29 21:09:45
    #include mousePressEvent: if(event->button()==Qt::LeftButton)左键按下 if(event->button()==Qt::RightButton) 右键按下 ...mouseDoubleClickEvent:双击事件 ...mouseMoveEvent: 默认鼠标点击按下才能触发 s
  • 在QGraphicsScene中添加Item,在Item中实现点击鼠标连接两个点,要求:鼠标点击第一个点存储坐标作为线段的起点,此时不画线,再点击第二个点,获取线段的终点,如果起点和终点有一个坐标相同直接相连,如果不同找两...
  • 原因是窗口上有个label,鼠标点击窗口上的label,触发的是label的事件。。如果要把事件分发给label的父窗口,我这用到了事件分发器。。 使用事件分发器: 控件指定 installEventFilter(QObject *obj) :指定在那个...
  • Qt事件事件处理

    2020-08-12 13:49:23
    文章目录1、事件系统2、...比如说,点击鼠标时,会触发QMouseEvent;敲击键盘时,会触发QKeyEvent;窗口大小发生变化时,会触发QResizeEvent。 2、事件传递 当事件发生时,Qt通过构造适当的QEvent子类的实例来创建一个
  • QT4的键盘事件

    千次阅读 2012-07-18 19:55:34
    QT4的键盘事件  ... 在Qt中,一个事件是QEvent的子类的对象。Qt能够处理上百种类型的...很多情况下,一个QEvent对象不能保存有关事件的所有信息,例如,鼠标点击事件需要保存是左键还是右键触发了这个信息,
  • 虽然 Qt 已经自带了很多信号函数,基本上可以满足我们大部分...在本次的学习笔记中,我们将重构鼠标点击时发射的信号函数,实现点击鼠标自动关闭程序的效果,源代码如下:from PyQt5.QtCore import pyqtSignal, QObj...
  • Qt基础系列 Qt基础的学习笔记。此文章为在B站上学习黑马程序员Qt教程的绘图部分做的记录,加深理解,方便回看。 目录Qt基础系列一、简介二、绘图1、头文件2、引入api3、相关参数... //点击鼠标触发事件 private slots:
  • 起因 设备需求点击之后触发蜂鸣器,有两套方案: 每个按钮都写入这串指令,令其能够调用触发蜂鸣器的类 通过全局的方式,这种只需要一个地方写调用程序即可,更加... //常规鼠标点击或按键 if((obj!=NULL) &&am
  • Qt5 事件截取

    2019-10-12 09:41:46
    触发事件后(例如鼠标点击或某个键盘上的按键按下) 会触发事件,通过 事件过滤器可以截取该事件 第一步 安装事件过滤器: void QObject::installEventFilter(QObject *filterObj); 其中,filterObj参数表示要在其上...
  • Qt 中的事件-10

    2020-09-03 18:18:08
    Qt中的事件为QEvent,常用的是点击或移动鼠标触发事件。 一、Qt中的鼠标进入和离开事件 如鼠标移入和离开都会有对应的事件,在此使用Label控件来测试对应的鼠标进入和移出事件。 1、创建自定义Label控件 因为要...
  • Qt事件专栏

    2021-01-31 19:30:56
    如果一个控件需要接收鼠标点击事件或者其他事件,那么就必须重写一个类,继承某种控件,并在ui界面中将控件提升为该类,然后在类的.cpp文件中重写事件处理函数 所有的事件处理函数全部都是虚函数,需要重新实现..
  • Qt 区分单双击事件

    千次阅读 2012-11-06 11:23:05
    slot: void toClicked(); //准备接受单击执行事件 void onMouseClicked(); // 鼠标单双击信号所对应的槽 QTime interval; // 记录两次点击的... //利用QTimer的超时来触发单击事件 void onMouseClicked() { if
  • Qt中event事件分发器

    2020-11-30 21:03:33
    运行程序时会根据实际的操作触发不同的多个事件,例如按下鼠标事件,直观讲好像是点击鼠标后,直接会调用mousePressEvent来处理事件,其实不然,在程序与各事件处理函数之间,还有一个专门用来管理事件的部分,称为...
  • QT消息/事件循环机制

    2020-12-18 09:38:25
    这个循环概念类似于while的函数循环,函数体内不断处理用户的输入,类比到事件循环中,用户点击鼠标、按下了键盘,便被称作为事件。 一般对于带UI窗口的程序来说,“事件”是由操作系统或程序框架在不同的时刻发出...
  • 利用 Qt::WA_NoMouseReplay,可以避免重复触发窗口外的鼠标点击事件(仅关闭窗口); 利用 activeWindows(),可以解决Qt::Popup属性的窗口无法输入中文的问题(show之后调用); 问题:点击其他区域,回关闭窗口,...
  • 如果说事件是用来创建窗口控件的,那么信号与槽就是用来对这个控件进行使用的,比如一个按钮,当我们使用按钮时,只关心clicked信号,至于这个按钮如何接受并处里鼠标点击事件,然后在发射这个信号,则不关心,但是...
  • QCloseEvent事件是指,当你鼠标点击窗口右上角的关闭按钮时,所触发的函数.如果你没有重写virtual closeEvent(QCloseEvent*event);这个虚函数的话,系统是默认接受关闭事件的,所以就会关闭窗体,但有的时候,比如在...
  • 而QLineEdit与QPushButton不同,它并没有clicked的信号,因此需要通过别的方式来监测点击事件。 因此,点击QLineEdit显示软键盘可以解耦为两个问题:1)软键盘+输入法; 2)软键盘触发。 1)软键盘+输入法 一般来说不...
  • Qt中,一个事件是QEvent的...很多情况下,一个QEvent对象不能保存有关事件的所有信息,例如,鼠标点击事件需要保存是左键还是右键触发了这个信息,还要知道事件发生时鼠标指针的位置,这些额外的信息储存在QEvent...
  • 4.选择第一个,表示点击触发,即按钮被鼠标点击后,会触发: 5.选择clicked()后,会在mainwindow.cpp处自动生成一个槽函数,槽函数里装载点击该按钮后触发的事件:   6.往上面红框函数中填入如下代码: ...
  • QCloseEvent事件是指,当你鼠标点击窗口右上角的关闭按钮时,所触发的函数.如果你没有重写virtual closeEvent(QCloseEvent*event);这个虚函数的话,系统是默认接受关闭事件的,所以就会关闭窗体,但有的时候,比如在...

空空如也

空空如也

1 2 3 4
收藏数 68
精华内容 27
关键字:

qt鼠标点击触发事件