QT`实现鼠标超时未点击,窗口自动关闭

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

QT实现鼠标超时未点击,窗口自动关闭

前言

有的时候我们需要某些窗口实现超时自动关闭,但是Qt窗口一般是多部件堆叠而成,如果常规处理,对每一个部件进行鼠标点击事件处理显然不太合理,我个人参考了网上前辈的处理方法,通过直接重新实现QApplication::notify函数来全局获取鼠标点击事件,最终实现功能。当然也可以在QApplication中安装事件过滤器,原理都是一样的。

bool QApplication::notify(QObject *, QEvent *); 先了解一下这个函数,所有事件都会经过这个函数的处理。所以我们处理这个问题的思路是重新实现这个函数,在这个函数里判断是否当前的事件为鼠标点击事件,如果是,则进行相应的处理。

要想重新实现bool QApplication::notify(QObject *, QEvent *);,需要子类化QApplication,然后重载notify函数

bool CGlobalApplication::notify(QObject *obj, QEvent *e)
{
    if(e->type() == QEvent::MouseButtonPress && widget) {
        widget->guiTimerRestart();
    }

    return QApplication::notify(obj,e);
}

在这个函数里先过滤出鼠标点击事件,然后对待监测的窗口进行操作,所以这个时候我们需要知道待监测窗口的指针。

采用的方式是,当待监测窗口被创建时,即在待监测窗口的构造函数中,我们把指针传递给CGlobalApplication,可以通过全局指针qApp实现

如下以CDialogMainMenu作为待监测窗口为例

CDialogMainMenu::CDialogMainMenu(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::CDialogMainMenu)
{
 	ui->setupUi(this);
  		      
   	auto gApp = static_cast<CGlobalApplication *>(qApp);
    if(gApp) {
        gApp->setWindowInstance(this);
    }     
}

gApp->setWindowInstance(this);通过这一步将待监测窗口CDialogMainMenu的实例化指针传递给CGlobalApplication

我们再回到notify函数,在这个函数里,每当程序收到一次鼠标点击,就调用widget->guiTimerRestart();在我个人自定义函数guiTimerRestart中实现定时关闭窗口即可。

如果有任何疑问,欢迎提出,互相交流共同进步。文章来源地址https://www.toymoban.com/news/detail-497657.html

到了这里,关于QT`实现鼠标超时未点击,窗口自动关闭的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • C++实现【获取鼠标位置】以及控制鼠标【打开窗口并点击】

    获取鼠标位置的函数源代码来自:C++【认知系列】实时获取鼠标坐标_c++ 获取鼠标坐标_Zalamp的博客-CSDN博客 鼠标点击操作代码来自: C++控制鼠标移动到指定位置并且左键点击_c++鼠标移动_蜚语77的博客-CSDN博客 在特定程序中实现鼠标点击操作分为两步,第一步就是在任务栏点

    2024年02月12日
    浏览(44)
  • Python: 实现鼠标点击tkinter窗口任意位置拖动

    近期在用python的tkinter库开发一个GUI,在开发接近尾声时候,同事发现一个问题:因GUI窗口较大,在他的笔记本上不能全部展示,而且只能通过点击顶部状态栏才能拖动,这样即使鼠标已经在屏幕最顶部,也无法看到窗口底部的控件。 一个解决方法就是:窗口及控件可以自适

    2024年02月11日
    浏览(56)
  • QT实现鼠标点击鼠标右键创建菜单(带图标)

    最近在开发项目时用到鼠标右键创建菜单的功能,在此做一些记录。 功能描述:QT实现点击鼠标右键创建菜单,菜单带图标,并且可以点击菜单栏选项,出现相应的界面。效果如下图所示: 实现原理:要实现上图效果,我用到QMenu,创建菜单项,将菜单项加入菜单,然后关联

    2024年02月15日
    浏览(35)
  • Qt隐藏标题栏,鼠标实现窗口右下角放缩窗口

    重写鼠标移动事件就可以了,如果想实现其它位置的缩放,可以自己根据鼠标的位置来实现,思路都是一样的

    2024年02月13日
    浏览(51)
  • 实现Qwidget窗口填满整个主窗口,并跟随鼠标的拖动自动缩放

    实现Qwidget窗口填满整个主窗口,并跟随鼠标的拖动自动缩放 新建一个窗口,我想在这个窗口上放一个QWidget,并且这个QWidget能够布满整个窗口,还可以随着随鼠标的拖动自动缩放 1、首先给大家介绍一个好用的组件库:qt-material-widgets (1)开源地址(基于QWidgets) 基于Qt Qui

    2024年02月10日
    浏览(47)
  • 使用python向窗口发送鼠标点击命令

    今天遇到一个问题。公司让用电脑在网页上看个视频。网页有个判断:一段时间没有鼠标活动,视频就会暂停。于是就想,能否隔一段时间就模拟鼠标点击一下视频暂停,再点一下继续播放。省得它自己停止播放。这样我就可以让网页窗口在后台,我去干别的。 研究了一下,

    2024年02月12日
    浏览(34)
  • selenium+python:点击元素、alert弹框、鼠标操作(左键点击、右键点击、双击、鼠标悬浮)、下拉选项框、窗口切换等操作的处

    driver=webdriver.Chrome() driver.maximize_window() driver.get(\\\"https://www.baidu.com/\\\") 在进行页面操作时,需要用鼠标进行左键点击、右键点击、双击、鼠标悬浮(比如鼠标移到某个位置就会出现一些元素)、鼠标拖动等操作,这时需要导入ActionChains模块 perform() 执行所有ActionChains 中存储的行为

    2024年02月05日
    浏览(64)
  • Qt鼠标点击事件处理:显示鼠标点击位置(完整示例)

    Qt 入门实战教程(目录) 前驱文章: Qt Creator 创建 Qt 默认窗口程序(推荐) 事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。 例如点击鼠标,按下按键。 在Qt中使用一个对象来表示一个事件,它继承自QEvent类。 如鼠标事件(例如点击

    2024年02月10日
    浏览(53)
  • Qt鼠标悬停+悬浮窗口

    这两个功能,有很多办法可以实现,这里记一下笔者常用的。 mouseHover.h mouseHover.cpp QRImage.h QRImage.cpp MainWindow.h MainWindow.cpp

    2024年02月06日
    浏览(44)
  • qt 禁止点击 屏蔽鼠标事件

    我开了一个线程上传文件夹,用一个进度条显示进度 测试 就在界面随便点击 ,也没有出泵任何控件,没有引发槽函数,直接就崩了! 不知道为什么崩了,所以直接禁止点击,蔽鼠标事件! 主界面 进度条 Qt::WidgetAttribute::WA_TransparentForMouseEvents 该属性的含义是“透明掉鼠标事

    2024年02月15日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包