• QT下跨平台库实现及移植经验分享


       最近在移植公司一个QT桌面软件到android上,有一些公司自定义的库,用了很多windows的api,移植过程很是曲折,在此有一些感悟分享一下~

    一.自编写跨平台库

    1.有时候为了程序给第三方用需要编译一些qt封装库,并可能跨平台使用,比如会在windows桌面系统、linux系统及android系统使用,所以在开始写的时候最好不要用windows本身的api,不然跨平台移植的时候全部要更换,非常麻烦;

    比如下面这些文件的接口:

    #include

    #include

    #include

    2.尽量要用POSIX标准c或者标准c++接口,如POSIX线程(pthreads),网络接口,尽量用纯c语言编写,这样方便跨平台移植;

      POSIX标准,全称为“可移植操作系统接口”(Portable Operating System Interface),是由IEEE计算机学会制定的一系列标准,旨在提高不同操作系统之间的兼容性。

    许多操作系统,包括Unix、Linux以及某些版本的Microsoft Windows,都支持POSIX标准。

    3.下面举一个简单的sleep函数例子,如果用POSIX标准c的sleep函数,在windows和android都可以用,不用修改,在qt也是一样:

    (1)代码:

    include "mainwindow.h"

    #include "ui_mainwindow.h"

    #include

    #include

    #include

    #define SleepKK(x) usleep(x*1000)   //微秒

    #define SleepSS(x) sleep(x)

    MainWindow::MainWindow(QWidget *parent)

        : QMainWindow(parent)

        , ui(new Ui::MainWindow)

    {

        ui->setupUi(this);

        qDebug()<<"time print:";

        qDebug() << "Current_date_and_time  start:   " << QDateTime::currentDateTime();

        SleepSS(1);

        qDebug() << "Current_date_and_time  start_1: " << QDateTime::currentDateTime();

        SleepSS(10);

        qDebug() << "Current_date_and_time  start_2: " << QDateTime::currentDateTime();

        SleepKK(5000);

        qDebug() << "Current_date_and_time  start_3: " << QDateTime::currentDateTime();

    }

    (2)结果:

    二.QT延时五种实现方法

    QT下是没有直接可用的延时sleep函数的,但有时候后需要延时,所以需要自己定义一个延时函数,方法有多种,具体见之前文章《QT延时五种实现方法》:

    https://blog.csdn.net/xieliru/article/details/135435815?spm=1001.2014.3001.5502

  • 相关阅读:
    shell编程5-函数与正则表达式
    树的重心学习
    Hudi第二章:集成Spark
    马克思的手稿-第11届蓝桥杯Scratch选拔赛真题精选
    从REST到GraphQL:升级你的Apollo体验
    DVWA系列4:XSS 跨站脚本攻击之 DOM型 和 反射型
    lighthouse VERTEX50对超纯水水质监测
    反向代理软件frp和混合云组网软件openvpn
    linux 启动springboot项目脚本
    基于thinkphp的卡券回收商城系统
  • 原文地址:https://blog.csdn.net/xieliru/article/details/136728417