Window(Qt/Vs)软件添加版本信息

5 篇文章 0 订阅
3 篇文章 0 订阅

Window(Qt/Vs)软件添加版本信息


说明:

  • 这里说的版本信息是右键软件可以在信息信息中看到的相信
  • 这些都只是在Windows中的效果
  • window中基本上都是通过添加资源文件.rc实现的

VS添加版本信息

  • 测试环境:Vs2015

添加资源文件

  • 右键项目 -> 添加 -> 资源 -> 选择Version -> 新建
    在这里插入图片描述
    在这里插入图片描述

添加版本定义头

  • version.h
#pragma once

#define _VAR2STR(s)			#s
#define VAR2STR(s)			_VAR2STR(s)

#define VER_MAJOR			1
#define VER_MINOR			0
#define VER_REVISION		0
#define VER_BUILD			1
#define VERSION				VER_MAJOR.VER_MINOR.VER_REVISION.VER_BUILD
#define VERSION_RC			VER_MAJOR,VER_MINOR,VER_REVISION,VER_BUILD
#define STR_VERSION			VAR2STR(VERSION)
#define STR_VERSION_RC		STR_VERSION
#define COMPILE_TIME		__DATE__ " " __TIME__

#define FILE_VERSION		STR_VERSION_RC
#define FILE_DESCRIPTION	"VS 自动修改软件版本号测试"
#define COMPANY				"搞不懂软件工作室"
#define PRODUCTNAME			"自动版本号测试软件"
#define SOFTWARENAME		"SoftwareVerioon.exe"
#define COPYRIGHT			"Copyright (C) 2022-2023"
  • 修改资源文件
#include "version.h"

/
//
// Version
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION VERSION_RC
 PRODUCTVERSION VERSION_RC
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x40004L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "080404b0"
        BEGIN
            VALUE "CompanyName", COMPANY
            VALUE "FileDescription", FILE_DESCRIPTION
            VALUE "FileVersion", FILE_VERSION
            VALUE "InternalName", SOFTWARENAME
            VALUE "LegalCopyright", COPYRIGHT
            VALUE "OriginalFilename", SOFTWARENAME
            VALUE "ProductName", PRODUCTNAME
            VALUE "ProductVersion", STR_VERSION_RC
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x804, 1200
    END
END

#endif    // 中文(简体,中国) resources
/

自动更新版本

添加批处理脚本
  • 未完成

  • 使用批处理脚本完成版本号增加的工作


设置生成事件
  • 右键项目 -> 配置属性 -> 生成事件 -> 后期生成事件 -> 命令行 -> 添加命令

Qt添加版本信息

  • 测试环境:Qt5.12.10、Qt5.15.2

添加资源文件

  • 只需要在.pro中添加VERSION qmake便会自动生成

    VERSION = 1.0.0
    
  • 但是如果修改资源文件每次重新构建时会重新生成一个资源文件覆盖掉以前的

  • 给出的建议是先让qmake自动生成然后,将修改好的拷贝到源文件,并在pro中添加资源文件

  • 这样做的目的是让qmake生成一个模板,当然如果已经有可直接添加

    RC_FILE += $PWD/xxx.rc
    
  • 如果使用RC_ICON添加应用图标可能会失效,推荐在RC文件中添加

    # 之前使用 RC_ICONS 添加 图标的方式可能不行
    RC_ICONS = xxxx.ico
    # 在资源文件中添加
    IDI_ICON1 ICON DISCARDABLE "xxxx.ico"
    

文件信息修改

  • 方法是通用的可以直接用vs上面的文件 rc,version.h的定义
  • 只是需要用上面的方法添加资源文件

自动更新版本

  • 未完成

CMake添加版本信息

添加资源文件

  • CMake在Windows平台依然是通过添加资源文件的方式实现

    set(RC_FILE ${PROJECT_SOURCE_DIR}/xxx.rc)    # 添加资源文件
    
  • 编译时将资源文件变量也加入其中

自动更新版本

  • 未完成

参考

VS DLL文件和EXE文件添加文件版本信息-CSDN博客

Visual studio每次build自动增加版本号 - onemuji - 博客园 (cnblogs.com)

个比较实用的VS C++版本号自增的实现方式_vscod 属性增加版本信息-CSDN博客

使用资源文件

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现一个裁剪图片的软件,可以使用Qt和OpenCV库来处理图像,使用Visual Studio作为开发工具。以下是一些基本步骤: 1. 创建一个Qt桌面应用程序工程,并添加OpenCV库文件。 2. 在Qt的界面设计师中创建一个窗口,并添加一个按钮和一个显示图片的标签控件。 3. 在按钮的槽函数中,使用OpenCV加载图片文件,并在标签控件中显示出来。 4. 实现鼠标事件处理函数,当用户在标签控件上进行鼠标操作时,记录下鼠标的位置信息。 5. 当用户松开鼠标时,根据鼠标的位置信息计算出裁剪区域,并使用OpenCV对图片进行裁剪。 6. 将裁剪后的图片显示在标签控件中,或者保存到本地文件中。 代码示例: ```c++ // 引入OpenCV库 #include <opencv2/opencv.hpp> #include <QLabel> #include <QMouseEvent> #include <QFileDialog> using namespace cv; // 声明一个Mat对象用于存储图片 Mat srcImage; // 声明一个标签控件用于显示图片 QLabel* imageLabel; // 声明一个鼠标位置变量 Point startPoint, endPoint; // 加载图片 void loadImg() { // 打开文件对话框选择图片文件 QString fileName = QFileDialog::getOpenFileName(nullptr, "Open Image", ".", "Image Files(*.png *.jpg *.bmp)"); // 如果用户未选择文件,直接返回 if (fileName.isEmpty()) { return; } // 读取图片文件 srcImage = imread(fileName.toStdString()); // 如果读取失败,直接返回 if (srcImage.empty()) { return; } // 将Mat对象转换成Qt的图像对象 QImage img = QImage((const unsigned char*)(srcImage.data), srcImage.cols, srcImage.rows, QImage::Format_RGB888).rgbSwapped(); // 显示图片 imageLabel->setPixmap(QPixmap::fromImage(img)); } // 鼠标按下事件处理函数 void mousePressEvent(QMouseEvent* event) { startPoint = event->pos(); } // 鼠标松开事件处理函数 void mouseReleaseEvent(QMouseEvent* event) { endPoint = event->pos(); // 计算裁剪区域 int x = std::min(startPoint.x(), endPoint.x()); int y = std::min(startPoint.y(), endPoint.y()); int width = std::abs(startPoint.x() - endPoint.x()); int height = std::abs(startPoint.y() - endPoint.y()); // 裁剪图片 Mat dstImage = srcImage(Rect(x, y, width, height)); // 将Mat对象转换成Qt的图像对象 QImage img = QImage((const unsigned char*)(dstImage.data), dstImage.cols, dstImage.rows, QImage::Format_RGB888).rgbSwapped(); // 显示裁剪后的图片 imageLabel->setPixmap(QPixmap::fromImage(img)); } int main(int argc, char *argv[]) { // 初始化Qt应用程序 QApplication app(argc, argv); // 创建一个窗口 QWidget* window = new QWidget(); // 创建一个按钮 QPushButton* loadButton = new QPushButton("Load Image", window); // 创建一个标签控件 imageLabel = new QLabel(window); // 设置标签控件的大小和位置 imageLabel->setGeometry(10, 50, 780, 520); // 连接按钮的点击事件到loadImg函数 connect(loadButton, &QPushButton::clicked, loadImg); // 显示窗口 window->show(); // 运行Qt应用程序 return app.exec(); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值