Mac上使用Qt捕获自定义协议
有些时候要给应用添加自定义的协议来通过浏览器唤起引用。
1. 注册协议
在Mac上的实现方式是在Info.plist中添加url schema来向系统注册自定义协议,在浏览器中访问注册过的协议,系统会打开app。
2. 捕获链接
只是注册协议并不能得到用户的具体请求,还需要通过代码来读取系统链接的打开时间,在Qt中这是通过fileopen的事件来传递的。代码中的SingleApplication继承自QApplication。
bool SingleApplication::event(QEvent *event) { if (event->type() == QEvent::FileOpen) { QFileOpenEvent *openEvent = static_cast<QFileOpenEvent *>(event); if (!openEvent->file().isEmpty()) { //xxx } else if (openEvent->url().isValid()) { //xxx } } return QApplication::event(event); }