Mac上使用Qt捕获自定义协议

有些时候要给应用添加自定义的协议来通过浏览器唤起引用。

1. 注册协议

在Mac上的实现方式是在Info.plist中添加url schema来向系统注册自定义协议,在浏览器中访问注册过的协议,系统会打开app。

Mac上使用Qt捕获自定义协议

 

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);
}    

 

Mac上使用Qt捕获自定义协议

上一篇:Linux下手动添加显示器分辨率


下一篇:Linux环境变量总结