Qt读取苹果系统OSX上的plist资源文件

来源:互联网 发布:建筑结构优化设计 编辑:程序博客网 时间:2024/06/05 16:54

先讲一下整体流程:

1、先在X-Code上创建.h和.mm文件,并写出主要读取资源文件函数和接口

2、把.h和.mm文件添加到Qt中,并写出C++间接调用接口

3、把界面和调用读取plist资源文件接口联系起来


对于MAC上的应用软件的信息读取,一般是对于该应用程序的info.plist的解析。

解析方法:

a、采用QT的Dom接口进行解析 ,就是把苹果的info.plist文件当成xml文件来解析,具体解析和解析XML方式一致,很简单,这里就不啰嗦了。

b、采用Object-C读取,然后通过C++来调用。第二种也比较容易,但是存在OC知识的陌生性,下面我们来一起进入第二种方法的解析吧。(说到要用Object-C,不得不提.mm文件和.m文件的差异性,这里我们用.mm文件。.mm文件除了可以包含Objective-C和C代码以外还可以包含C++代码,而.m文件只能包含Objective-C和C代码。这里我们要用到.mm文件,.mm文件可以直接用苹果电脑的X-Code开发平台生成,头文件还是.h。)

完成接口的话如图:


现将如图.mm文件代码公布如下:

#include "readDeviceInfo.h"
#include <QDebug>
#import <Foundation/Foundation.h>
#import <iostream>
#ifdef Q_OS_OSX
    #import <Cocoa/Cocoa.h>
#endif

#import <GLKit/GLKit.h>
ReadDeviceInfo::ReadDeviceInfo()
{
}


QString ReadDeviceInfo::getAppNameStr()
{
    NSString *executableFile = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleExecutableKey]; //获取项目名称
    return QString::fromNSString(executableFile);
}

QString ReadDeviceInfo::getAppPublicVersion()
{
    NSString *executableFile = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleInfoDictionaryVersionKey]; //获取外部版本
    return QString::fromNSString(executableFile);
}

QString ReadDeviceInfo::getAppPrivateVersion()
{
    NSString *executableFile = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleVersionKey]; //获取内部版本
    //NSString *executableFile = [[NSBundle mainBundle]objectForInfoDictionaryKey:@"CFBundleVersion"];
    return QString::fromNSString(executableFile);
}


以上是苹果提供的最常用的三个接口,还有如下接口:

const CFStringRef kCFBundleInfoDictionaryVersionKey;
const CFStringRef kCFBundleExecutableKey;
const CFStringRef kCFBundleIdentifierKey;
const CFStringRef kCFBundleVersionKey;
const CFStringRef kCFBundleDevelopmentRegionKey;
const CFStringRef kCFBundleNameKey;
const CFStringRef kCFBundleLocalizationsKey;

0 0