最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt 設置軟件版本信息的實現(xiàn)

 更新時間:2025年06月19日 11:22:56   作者:好鑫晴9899  
本文介紹了Qt項目中設置版本信息的三種常用方法,包括.pro文件和version.rc配置、CMakeLists.txt與version.h.in結合,具有一定的參考

在運行程序期間設置版本信息

大部分的程序在運行之后都會提供一個關于的按鈕,通過點擊該按鈕并彈出一個關于界面,則可以查看相關的程序信息。此關于界面為用戶自定義的一個界面?;蛘呖梢栽谥鹘缑娴挠蚁陆秋@示出當前軟件的版本信息。兩種方式之間并不沖突。

可以參考VS

在 QT 中設置軟件版本信息的幾種方法

方法一:通過 .pro 文件設置 (qmake 項目)

1. 在 .pro 文件中添加版本信息

# 設置應用程序版本
VERSION = 1.2.3

# 或者使用更詳細的版本設置
VER_MAJ = 1
VER_MIN = 2
VER_PAT = 3
VERSION = $$join(VER_MAJ, ., VER_MIN, ., VER_PAT)

# Windows 資源文件設置 (可選)
win32 {
    RC_ICONS = myapp.ico
    VERSIONRC = version.rc
    RC_FILE = $$VERSIONRC
}

2. 創(chuàng)建 version.rc 文件 (Windows)

#include <windows.h>#引入 Windows 頭文件
 
VS_VERSION_INFO VERSIONINFO#資源編譯器我們要定義的是一個版本信息資源
FILEVERSION    1,1,1,0#設置文件版本號
PRODUCTVERSION 1,2,3,0#設置產品版本號,代表整體產品的版本(可和文件版本不同)
FILEFLAGSMASK 0x3fL#掩碼(Mask)用于指定有效的標志位(file flags)
#ifdef _DEBUG#設置文件標志(FileFlags),表示程序構建的狀態(tài)
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L#設置目標操作系統(tǒng)
FILETYPE 0x1L#設置文件類型,0x1L 表示 VFT_APP,應用程序(EXE)
FILESUBTYPE 0x0L#子類型,應用程序通常為 0x0L(無子類型)。
BEGIN#開始版本資源的內容定義#語言和字符集標識符:0409:表示語言為英文(美國 English - United States)04b0:表示 Unicode 編碼頁(1200)
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "CompanyName", "HXQ"
            VALUE "FileDescription", "HXQ Robot Vision 2025"
            VALUE "FileVersion", "1.1.1.0"
            VALUE "InternalName", "HXQ Robot Vision 2025"#內部名稱,通常為項目名。
            VALUE "LegalCopyright", "@HXQ Corporation.All rights reserved. "#版權信息。
            VALUE "OriginalFilename", "HXQ Robot Vision 2025.exe"#原始文件名,即編譯時生成的文件名。
            VALUE "ProductName", "HXQ Robot Vision 2025"# 產品名稱。
            VALUE "ProductVersion", "1.1.1.0"# 字符串形式的產品版本。
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END

方法二:通過 CMake 設置 (CMake 項目)

1. 在 CMakeLists.txt 中設置版本

# 設置項目版本
set(PROJECT_VERSION_MAJOR 1)
set(PROJECT_VERSION_MINOR 2)
set(PROJECT_VERSION_PATCH 3)
project(YourApp VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})

# 配置版本頭文件
configure_file(
    "${CMAKE_CURRENT_SOURCE_DIR}/version.h.in"
    "${CMAKE_CURRENT_BINARY_DIR}/version.h"
)

# Windows 資源文件
if(WIN32)
    set(RC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/version.rc")
    configure_file("${RC_FILE}.in" "${RC_FILE}")
    set(APP_ICON "${CMAKE_CURRENT_SOURCE_DIR}/myapp.ico")
    list(APPEND SOURCES "${RC_FILE}")
endif()

2. 創(chuàng)建 version.h.in 文件

#ifndef VERSION_H
#define VERSION_H

#define PROJECT_VERSION_MAJOR @PROJECT_VERSION_MAJOR@
#define PROJECT_VERSION_MINOR @PROJECT_VERSION_MINOR@
#define PROJECT_VERSION_PATCH @PROJECT_VERSION_PATCH@
#define PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}"

#endif // VERSION_H

方法三:運行時設置和獲取版本信息

在代碼中獲取版本信息

#include <QApplication>
#include <QVersionNumber>
#include <QDebug>

void checkVersion()
{
    // 獲取應用程序版本
    QString versionStr = QApplication::applicationVersion();
    qDebug() << "Application version:" << versionStr;
    
    // 使用 QVersionNumber 進行版本比較
    QVersionNumber currentVersion = QVersionNumber::fromString(versionStr);
    QVersionNumber minRequiredVersion(1, 0, 0);
    
    if(currentVersion < minRequiredVersion) {
        qWarning() << "This version is too old!";
    }
    
    // 獲取其他元數據
    qDebug() << "Application name:" << QApplication::applicationName();
    qDebug() << "Organization:" << QApplication::organizationName();
}

最佳實踐建議

  • 單一真實來源:確保版本信息只有一個來源,避免多處定義導致不一致

  • 自動化版本更新

    • 使用構建系統(tǒng)自動遞增版本號

    • 集成到 CI/CD 流程中

  • 版本格式

    • 遵循語義化版本控制 (SemVer) 規(guī)范 (MAJOR.MINOR.PATCH)

    • 例如:1.2.3 表示主版本1,次版本2,修訂版本3

  • 顯示版本信息

    • 在"關于"對話框中顯示完整版本信息

    • 在日志中輸出版本信息以便調試

  • Windows 特殊處理

    • 確保資源文件中的版本與應用程序版本一致

    • 版本資源會影響文件屬性中的版本信息

完整示例:在"關于"對話框中顯示版本

#include <QMessageBox>
#include <QApplication>

void showAboutDialog()
{
    QString aboutText = QString(
        "<h2>%1</h2>"
        "<p>版本: %2</p>"
        "<p>Copyright ? 2023 %3. 保留所有權利。</p>"
        "<p>了解更多: <a )
        .arg(QApplication::applicationDisplayName(),
             QApplication::applicationVersion(),
             QApplication::organizationName());
    
    QMessageBox::about(nullptr, "關于", aboutText);
}

對于大多數 QT 項目,方法一或方法二結合方法三是最常用的方式。

到此這篇關于Qt 設置軟件版本信息的實現(xiàn)的文章就介紹到這了,更多相關Qt 設置軟件版本信息內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • 漫談C++哈夫曼樹的原理及實現(xiàn)

    漫談C++哈夫曼樹的原理及實現(xiàn)

    給定N個權值作為N個葉子結點,構造一棵二叉樹,若該樹的帶權路徑長度達到最小,稱這樣的二叉樹為最優(yōu)二叉樹,也稱為哈夫曼樹(Huffman?Tree)。本文將通過圖片為大家詳細講講C++哈夫曼樹的原理及實現(xiàn),需要的可以參考一下
    2022-08-08
  • 在C++中把字符串轉換為整數的兩種簡單方法

    在C++中把字符串轉換為整數的兩種簡單方法

    經常會遇到類型轉換,本文主要介紹了C++中把字符串轉換為整數的兩種簡單方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • C語言實現(xiàn)貪吃蛇游戲代碼

    C語言實現(xiàn)貪吃蛇游戲代碼

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)貪吃蛇游戲代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • MFC實現(xiàn)連連看游戲之消子算法

    MFC實現(xiàn)連連看游戲之消子算法

    這篇文章主要為大家詳細介紹了MFC實現(xiàn)連連看游戲之消子算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C++圖文并茂分析講解內存管理

    C++圖文并茂分析講解內存管理

    本章主要介紹C語言與C++的內存管理,以C++的內存分布作為引入,介紹C++不同于C語言的內存管理方式(new delete對比 malloc free),感興趣的朋友來看看吧
    2022-09-09
  • C語言的fork函數在Linux中的進程操作及相關面試題講解

    C語言的fork函數在Linux中的進程操作及相關面試題講解

    fork函數只能在類Unix的系統(tǒng)中使用,用于創(chuàng)建子線程,這里總結了C語言的fork函數在Linux中的進程操作及相關面試題講解,先來看一下C語言程序的存儲空間與進程示意:
    2016-06-06
  • C++常見獲取隨機數的方法小結

    C++常見獲取隨機數的方法小結

    這篇文章主要介紹了C++常見獲取隨機數的方法,結合實例形式總結分析了C++獲取隨機數的幾種常見方法與相關操作注意事項,需要的朋友可以參考下
    2018-05-05
  • opencv平均背景法詳解

    opencv平均背景法詳解

    這篇文章主要為大家詳細介紹了opencv平均背景法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++ min/max_element 函數用法詳解

    C++ min/max_element 函數用法詳解

    這篇文章主要介紹了C++ min/max_element 函數用法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • C++淺析函數重載是什么

    C++淺析函數重載是什么

    C++?允許多個函數擁有相同的名字,只要它們的參數列表不同就可以,這就是函數的重載(Function?Overloading),借助重載,一個函數名可以有多種用途
    2022-08-08

最新評論

长白| 五常市| 忻城县| 石首市| 北安市| 十堰市| 平泉县| 黔南| 石渠县| 鸡西市| 云南省| 惠东县| 长武县| 嘉禾县| 寻乌县| 武义县| 洞头县| 乐清市| 黑山县| 建宁县| 祁门县| 芦山县| 两当县| 通许县| 柳河县| 镇沅| 白水县| 千阳县| 日喀则市| 新民市| 福州市| 临邑县| 河西区| 晋宁县| 漳浦县| 龙川县| 固镇县| 沂水县| 旅游| 图木舒克市| 梅州市|