mac os中使用url scheme唤起qt程序并获取启动参数

网上查找到的资料大多是在xcode中设置如何被url scheme唤起并获取启动参数,qt creator的基本查不到,所以写下这篇文章。
url scheme是一门比较实用的技术,例如电脑在浏览器中输入"qq://"即可打开qq。并且可以在url后面增加参数,以便让程序在启动后获取这些参数并处理事件。
先将release下的app打包,然后编辑包里面的info.plist文件。
增加以下内容:

CFBundleURLTypes

	
		CFBundleTypeRole
		Editor
		CFBundleURLName
		testabc url
		CFBundleURLSchemes
		
			testabc
		
	

其中有两个"testabc",即url scheme前缀,可根据需求替换成自己的前缀。
将app拷贝到“应用程序”中,先打开一次然后直接关闭。
这时在浏览器输入"testabc://“即可打开软件。
如果同时还需要获取url后面的参数,如"testabc://?name=xiaoming&age=10”,则新建一个头文件:

#ifndef OPENEVENTFILTER_H
#define OPENEVENTFILTER_H
#include 
#include 
class OpenEventFilter : public QObject
{
public:
    bool eventFilter(QObject* obj, QEvent* event)
    {
    	bool result=false;
        if (event->type() == QEvent::FileOpen)
        {            
            QFileOpenEvent* fileEvent = static_cast(event);
            if (!fileEvent->url().isEmpty())
            {                                
                QString url = fileEvent->url().toString();
                QMessageBox::information(nullptr, "完整url scheme", url,"确定");            
            }
            result=true;
        }
        else
        {
            result = QObject::eventFilter(obj, event);
        }
        return result;
    }
};
#endif // APPLICATIONCUSTOM_H

之后在main函数中引入这个头文件,并且插入以下语句:

OpenEventFilter *openEventFilter= new OpenEventFilter;
a.installEventFilter(openEventFilter);//这个变量a是默认生成的QApplication a(argc, argv)

依然打包、修改info.plist、拷贝到“应用程序”中,之后在浏览器打开"testabc://?name=xiaoming&age=10",就会看到程序被启动,并且弹出带有完整url的对话框。

你可能感兴趣的:(QT,QT,URL,SCHEME,MAC,OS,C++)