Qt for Mac点击dock事件处理
来源:互联网 发布:网络语言暴力作文 编辑:程序博客网 时间:2024/06/10 06:02
在Mac osx的dock中单击我们自己的程序图标时,如何来实现显示界面或者其他的操作呢?
首先包含头文件objc.h跟message.h,然后定义两个函数setupDockClickHandler(安装Dock点击处理程序) 以及 dockClickHandler(接收dock点击处理)
#ifdef Q_OS_MAC#include <objc/objc.h>#include <objc/message.h>void setupDockClickHandler();bool dockClickHandler(id self,SEL _cmd,...);#endif
实现部分的代码
#ifdef Q_OS_MACvoid setupDockClickHandler() { Class cls = objc_getClass("NSApplication"); objc_object *appInst = objc_msgSend((objc_object*)cls, sel_registerName("sharedApplication")); if(appInst != NULL) { objc_object* delegate = objc_msgSend(appInst, sel_registerName("delegate")); Class delClass = (Class)objc_msgSend(delegate, sel_registerName("class")); SEL shouldHandle = sel_registerName("applicationShouldHandleReopen:hasVisibleWindows:"); if (class_getInstanceMethod(delClass, shouldHandle)) { if (class_replaceMethod(delClass, shouldHandle, (IMP)dockClickHandler, "B@:")) qDebug() << "Registered dock click handler (replaced original method)"; else qWarning() << "Failed to replace method for dock click handler"; } else { if (class_addMethod(delClass, shouldHandle, (IMP)dockClickHandler,"B@:")) qDebug() << "Registered dock click handler"; else qWarning() << "Failed to register dock click handler"; } }}bool dockClickHandler(id self,SEL _cmd,...) { Q_UNUSED(self); Q_UNUSED(_cmd); //显示窗口// QWidget w;// w.show(); // // Return NO (false) to suppress the default OS X actions return false;}#endif
然后我们在main.cpp中
#ifdef Q_OS_MAC setupDockClickHandler();#endif
这样就可以实现mac dock点击事件了
阅读全文
0 0
- Qt for Mac点击dock事件处理
- Qt 处理鼠标点击事件
- Qt 5.0 for mac 添加程序可执行文件图标 和 dock窗口显示图标
- Qt for Mac模拟鼠标以及键盘事件
- Mac点击关闭按钮退出程序 与 程序隐藏后点击dock图标重新显示
- Mac 点击dock图标显示窗口,点击关闭按钮隐藏窗口
- Mac点击关闭按钮退出程序 与 程序隐藏后点击dock图标重新显示
- qt for symbian前后台切换事件的截获处理
- qt for symbian前后台切换事件的截获处理
- mac 10.10 reset dock
- mac 隐藏Dock
- mac,finder ,dock
- 点击事件处理
- widger处理点击事件
- 点击事件处理
- 处理DrawableRight点击事件
- 处理频繁点击事件
- RecyclerView点击事件处理
- 智慧城市什么样——城市治理“众‘智’成城”
- LibQQt系列之一 《QQtApplication》
- 关于写代码的注意事项之,全部英文注释,tab缩进换成四个空格的缩进,代码末尾不能有空格
- c++中输入和输出
- C++内存管理之泄露检查
- Qt for Mac点击dock事件处理
- 叉乘分配律的几何证明
- Cloudera 安装parcel hang的问题
- argparse
- TCP 实例
- PHP 实现验证码
- MySQL 学习笔记本2——SQL 语句
- Go并发编程之协程
- ENVI教程:InSAR技术,相位解缠