Qt编写大型应用程序的一般步骤

Posted 顾文繁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt编写大型应用程序的一般步骤相关的知识,希望对你有一定的参考价值。

在开发桌面应用程序中,必须要确定开发代码框架,如果没有合理的代码框架,不知道何时加载相应的资源,所以本篇文章以QML为例介绍QT GUI程序一般步骤。

QML介绍

QML是为了降低GUI组件或者页面布局的一种快捷方法,类似于Java Web开发中,前后端分离,后端程序员专注于业务逻辑开发,前端人员关注页面。该方式降低了程序之间的耦合程序,使得开发效率得以提升。

QML引擎

我们应该明白QML引擎是全局唯一的,那么改组件就应该使用单例模式。编写单例模式生成一个带有QML引擎的QObject指针

/**
 *返回一个带有QML引擎的QObject指针
 * @brief MainApp::GetInstance
 * @return
 */
QObject* MainApp::GetInstance(QQmlEngine* /*engine*/, QJSEngine* /*scriptEngine*/){
    QObject* pObj = GetMainApp();
    QQmlEngine::setObjectOwnership(pObj, QQmlEngine::CppOwnership);
    return pObj;
}

初始化

下面的函数将介绍初始化各种步骤

    //1
    bool Initialize();
    bool Uninitialize();

    //2 初始化各种路径
    bool InitializePath();
    bool UninitializePath();

    //3 配置文件
    bool InitializeCfg();
    bool UninitializeCfg();

    //4 初始化国际化
    bool InitializeTranslator();
    bool UninitializeTranslator();

    //5 初始化qml
    bool InitializeQmlEngine();
    bool UninitializeQmlEngine();

    //6 初始化UI
    bool InitializeUI(QQmlApplicationEngine* pQmlEngine);
    bool UninitializeUI(QQmlApplicationEngine* pQmlEngine);

    //7 初始化其他
    bool InitializeOthers();
    bool UninitializeOthers();

在Initialize()函数中,将调用2~7函数进行各种组件的初始化,并且设置应用程序的图标、应用名称等信息。

    // 设置应用程序属性
    setApplicationName(QStringLiteral(APP_NAME));
    setWindowIcon(QIcon(QStringLiteral(APP_ICON_PATH)));
    setApplicationDisplayName(tr(APP_DISPLAYNAME));

在UI初始化中,设置应用程序的字体,注册其他组件等操作,并且将主QML文件进行加载。

最后不论是初始化错误还是关闭应用程序,不能忘记进行反初始化,将涉及到的资源进行内存释放。

 

 

 

 

 

 

 

 

以上是关于Qt编写大型应用程序的一般步骤的主要内容,如果未能解决你的问题,请参考以下文章

QT软件开发之入门基础--1.5开发第一个QT程序

在大型代码库/团队中重用黄瓜步骤

QT 实用代码片段

如何使用java编写大型网页游戏 说下过程 网页游戏用啥编写比较好

THREE.js - 大型int作为Uniform

在 .NET 中编写大型多步骤表单的最有效方法是啥?