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

 

posted @ 2020-08-30 10:56  Jax.Li  阅读(288)  评论(0编辑  收藏  举报