QT的跨平台开发问题(4)跨平台的原理

1、QT跨平台的原理

QT跨平台起始并不神奇,qt在不同操作系统下都实现有不同的底层类库,然后再暴露出一个公共的应用层接口,我们做的开发就是基于这个公共的应用层接口来完成。所谓的跨平台是指基于qt写的代码是跨平台,而不是编译出来的文件跨平台,同一份代码需要放到另一个平台上时,需要用另一个平台的类库重新编译。

看一下QT的源代码就明白了。

通过仔细阅读源代码你就知道,所谓跨平台,就是在不同的平台下编译不同的源代码,只是借口一样罢了。

2、简单的实例

//CrossPlatform.h

#ifndef CROSSPLATFORM_H
#define CROSSPLATFORM_H
extern void CrossPlatformfun();
#endif // CROSSPLATFORM_H

//CrossPlatform_unix.cpp

#include "CrossPlatform.h"

#include <stdio.h>

void CrossPlatformfun()

{

    printf("Linux\n");

}

//CrossPlatform_win.cpp

#include "CrossPlatform.h"
#include <stdio.h>
void CrossPlatformfun()
{
 printf("windows\n");
}
 

//main.cpp

#include <QCoreApplication>
#include "CrossPlatform.h"
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    CrossPlatformfun();
    return a.exec();
}

 

//pro文件

QT -= gui

CONFIG += c++11 console

CONFIG -= app_bundle

DEFINES += QT_DEPRECATED_WARNINGS

HEADERS += CrossPlatform.h

SOURCES += main.cpp

win32 {

    SOURCES += CrossPlatform_win.cpp

}else {

    SOURCES += CrossPlatform_unix.cpp

}

运行结果:

相同的接口,都是void CrossPlatformfun(),通过pro文件配置,windows系统下包含CrossPlatform_win.cpp,linux系统下包含CrossPlatform_unix.cpp,这样达到跨平台的目的。

当然这只是一个简单的例子,QT的实现肯定复杂的多,但是基本的原理是一样的。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值