Qt处理Windows消息

作为一个跨平台的C++图形界面框架,Qt拥有自己的一套事件处理系统。不过,在有些时候,比起Qt的事件系统,直接处理Windows消息或许来得更为方便和直观。

那么,Qt怎样才能处理Windows消息呢?

工具/原料

  • Qt 5.6

一、用到的头文件和函数

  1. 首先,要想在Qt工程中处理Windows消息,你必须包含对应的Windows头文件<windows.h>。如果还需要用到一些扩展的组件,则还要包含<windowsx.h>。

    Qt怎样处理Windows消息

  2. 此外,你需要实现继承自QWidget类的虚函数nativeEvent。这个函数名也很好记,即本地事件。注意,这是一个保护类型成员。

    Qt怎样处理Windows消息

  3. 该函数的声明为

    virtual bool 

    nativeEvent(const QByteArray &eventType, void *message, long *result);

    注意,在Windows平台上,事件类型标识为 "windows_generic_MSG",消息类型为MSG*,返回值类型为LRESULT。

    Qt怎样处理Windows消息

    END

二、示例

  1. 首先,我们在类中声明nativeEvent函数。

    Qt怎样处理Windows消息

  2. 接着,我们对参数类型进行转换。

    Qt怎样处理Windows消息

  3. 然后,就可以像往常一样通过switch来处理Windows消息了。

    Qt怎样处理Windows消息

  4. 在此需要提醒大家注意的是,如果我们处理完相应的消息后,不再想让Qt执行默认的事件处理,就返回true,表示消息已处理;否则,就返回false,执行完指定的操作后再执行默认处理。

    Qt怎样处理Windows消息

--------------------------------------------------

 

qt  如何捕获全屏的鼠标事件,这个帖子上面主要讲述了下嵌入式qt怎么抓取系统级消息,不过从这篇文章中我也看到了希望,有个回复说winEventFilter支持这种方式,然后我就顺着这个线索找到了nativeEventFilter方法,最终试验成功。

首先是让你自己的类继承自QAbstractNativeEventFilter,然后通过QCoreApplication来注册你的窗口类,代码如下:
app.installNativeEventFilter(m_MainWindow);

最后在nativeEventFilter方法中就能获取到系统级事件,我的qt5.5.观看qt的帮助文档,如图1所示

图1

 


bool CCailianMainWindow::nativeEventFilter(const QByteArray & eventType, void * message, long * result)
{
    if (eventType == "windows_generic_MSG" || eventType == "windows_dispatcher_MSG")
    {
        MSG * pMsg = reinterpret_cast<MSG *>(message);

        if (pMsg->message == WM_NCMOUSEMOVE)
        {
            //获取到系统鼠标移动,可以做像qq一样的忙碌检测
        }
    }

    return false;
}

调试结果如图2所示
 

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt 5.6.3是一种跨平台的应用程序开发框架,可在Windows操作系统上使用。它提供了丰富的工具和库,以帮助开发者快速创建高质量的应用程序。 Qt 5.6.3具有许多令人激动的功能和改进,使得在Windows上开发应用程序更加轻松和高效。 首先,Qt 5.6.3引入了对Windows 10的全面支持。这意味着开发者可以使用Qt来创建符合Windows 10设计准则的应用程序,并充分利用Windows 10的新功能和特性。 其次,Qt 5.6.3提供了用于Windows开发的工具和库。这些工具包括Qt Creator集成开发环境,该环境具有强大的代码编辑和调试功能,可以帮助开发者更快地创建和调试应用程序。此外,Qt还提供了一系列用于开发图形界面和多媒体应用程序的库,如Qt GUI和Qt Multimedia等。 此外,Qt 5.6.3还提供了与Windows操作系统的紧密集成。开发者可以轻松地使用Qt来访问Windows的原生API,并与其他Windows应用程序进行交互。这使得开发者可以创建更加功能强大和灵活的应用程序。 总之,Qt 5.6.3是一种非常强大的开发框架,可以帮助开发者在Windows操作系统上创建出色的应用程序。无论是开发图形界面应用程序还是多媒体应用程序,Qt都具备丰富的功能和工具来满足开发需求。无论是初学者还是经验丰富的开发者,都可以从Qt 5.6.3中受益,并将它用于Windows应用程序开发中。 ### 回答2: Qt是一种跨平台的应用程序开发框架,而Qt 5.6.3是Qt框架的一个版本。它是在Windows操作系统上运行的。 Qt 5.6.3是在2016年发布的一个重要的Qt版本。它引入了许多新功能和改进,包括性能优化、新的Qt Quick控件和Qt WebView模块。这个版本也修复了一些已知的问题,提高了整体的稳定性和可靠性。 在Windows平台上使用Qt 5.6.3进行开发可以获得丰富的功能和工具。Qt提供了许多用于图形用户界面(GUI)开发的模块,包括Qt Widgets和Qt Quick。Qt Widgets提供了一套丰富的可视化控件和布局管理器,可以用于创建传统的桌面应用程序。而Qt Quick是基于QML(Qt Meta-Object Language)的一种声明式语言,可以用于创建现代化的动态用户界面。 除了GUI开发,Qt 5.6.3还提供了许多其他功能模块,如数据库访问、网络编程、多媒体处理和多线程支持等。Qt还支持跨平台的开发,开发者可以使用相同的代码库在不同的操作系统上进行开发。 对于Windows开发者来说,Qt 5.6.3提供了一个强大的开发工具链。Qt Creator是Qt官方提供的集成开发环境(IDE),它提供了代码编辑器、调试器、可视化设计工具和自动化构建系统等。开发者可以使用Qt Creator轻松地创建、调试和部署他们的应用程序。 总之,Qt 5.6.3是一个功能强大、稳定可靠的版本,适用于Windows平台的应用程序开发。无论是开发桌面应用还是移动应用,Qt都可以提供丰富的功能和工具,帮助开发者快速、高效地开发应用程序。 ### 回答3: Qt 5.6.3是一个跨平台的C++应用程序开发框架,适用于Windows操作系统。它提供了丰富的功能和工具,用于开发用户友好、可扩展和高效的应用程序。 Qt 5.6.3提供了广泛的功能库和模块,包括图形界面、网络、数据库、多媒体、XML处理、并发编程等,使开发者能够轻松地构建各种类型的应用程序。 在Windows操作系统上使用Qt 5.6.3进行开发时,开发者可以利用Qt的集成开发环境Qt Creator来创建和管理项目。Qt Creator提供了一个直观的界面和强大的功能,使开发者能够方便地编写代码、调试程序和构建应用程序。 Qt 5.6.3还支持Windows操作系统的各种特性和功能,如窗口管理、消息处理、文件系统访问、多线程编程等。开发者可以利用Qt的API和工具来实现这些功能,并为用户提供一个完整的Windows体验。 总之,Qt 5.6.3是一个功能强大、易于使用和有效的应用程序开发框架,在Windows操作系统上开发应用程序时具有广泛的应用前景。无论是开发桌面应用程序、嵌入式设备、移动应用程序还是云服务,Qt 5.6.3都能提供灵活的解决方案和卓越的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值