You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt QDesktopServices::setUrlHandler在Mac失效,无法接收URL携带数据

问题:Qt应用通过自定义URL协议唤起后无法接收带参数的URL

我已经能通过urlApp://协议唤起Qt应用,但使用urlApp://test传递数据时,HandleURL::handleURL无法接收到完整的URL。

使用环境

  • Qt 6.3.0
  • macOS 12.4

已完成的配置

1. main.cpp中注册URL处理器

int main(int argc, char *argv[])
{
    ....
    HandleURL *URLHandler = new HandleURL();
    QDesktopServices::setUrlHandler("urlApp", URLHandler, "handleURL");
    ....
    engine.rootContext()->setContextProperty("URLHandler", URLHandler);
    ....
}

2. HandleURL类实现

#ifndef HANDLEURL_H
#define HANDLEURL_H

#include <QObject>
#include <QDesktopServices>
#include <QUrl>
class HandleURL : public QObject
{
    Q_OBJECT
public:
    explicit HandleURL(){}

signals:
    void incomingURL(QString path);

public slots:
    void handleURL(const QUrl &url){
        emit incomingURL(url.toString());
    }
};

#endif // HANDLEURL_H

3. info.plist中添加CFBundleURLTypes配置

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLName</key>
    <string>urlApp</string>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>urlApp</string>
    </array>
  </dict>
</array>

内容的提问来源于stack exchange,提问作者Otis Lin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 22:07:47