当前位置: 首页 > news >正文

Qt学习记录

Qt学习记录

Qt6读取GBK文件

在Qt5中,有QTextCodec模块,支持各种编码设置。

// Qt5
QCoreApplication a(argc, argv);
auto desk = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
QFile file(QDir(desk).filePath("test.txt"));
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){qDebug() << file.errorString() << Qt::endl;return a.exec();
}
QTextStream in(&file);
in.setCodec(QTextCodec::codecForName("GBK"));
while (!in.atEnd()){const QString &line = in.readLine();qDebug() << line;
}
return a.exec();

Qt6后,删除了QTextCodec模块,引入了QStringConverter,其中有几个常用的编码,其他编码都不支持,目前只能结合libconv等其他库实现编码转换。但对于windows默认的GBK编码,可以换种方式实现。

// Qt6
QCoreApplication a(argc, argv);
auto desk = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
QFile file(QDir(desk).filePath("test.txt"));
if (!file.open(QIODevice::ReadOnly)){qDebug() << file.errorString() << Qt::endl;return a.exec();
}
QByteArray arr = file.readAll();
auto s = QString::fromLocal8Bit(arr);
qDebug() << s;
return a.exec();

Qt6组件语言设置

部分组件默认语言是英文,使用下面的代码语言改为跟随系统。例如QMessageBox弹框中的Ok会变成确认,Cancle会变成取消等。

QApplication app(argc, argv);
QTranslator translator;
const QString &locale = QLocale::system().name();
const QString &path = QLibraryInfo::path(QLibraryInfo::TranslationsPath);
if (!translator.load(QString("qt_%1").arg(locale), path)) {qDebug() << "load qt_" + locale + ".qm failed";
} else {QApplication::installTranslator(&translator);
}
Widget w;
w.show();
return QApplication::exec();

Qt CMake设置应用程序图标等信息

Windows .rc 文件(资源脚本文件)是用来定义和描述程序中的各种资源的文本文件。这些资源可以包括图标、光标、对话框、菜单、字符串等。.rc 文件是 Windows 应用程序开发中的重要组成部分,通常与 C 或 C++ 代码一起使用,通过资源编译器将其编译成二进制 .res 文件,并在程序中加载这些资源。

  1. 首先准备一个ico文件,用作应用程序图标。
  2. 新建c++头文件version.h,宏定义应用程序一些信息。
//
// Created by chunf on 2024/12/26.
//#ifndef VERSION_H
#define VERSION_H#define PRODUCT_ICON           "resources/app.ico" // 图标,项目根目录/resources/app.ico#define FILE_VERSION           1,0,0,0   // 文件版本
#define FILE_VERSION_STR       "1.0.0.0"
#define PRODUCT_VERSION        1,0,0,0   // 产品版本
#define PRODUCT_VERSION_STR    "1.0.0.0"
#define COMPANY_NAME           "公司名称"
#define INTERNAL_NAME          "zhd.exe"
#define FILE_DESCRIPTION       "职代会评测统计程序"  // 文件说明
#define LEGAL_COPYRIGHT        "Copyright 2024 The xxxx Company. All rights reserved." // 版权
#define ORIGINAL_FILE_NAME     "demo.exe"    // 原始文件名
#define PRODUCT_NAME           "zdh"        // 产品名称
#define ORGANIZATION_DOMAIN    "https://www.qt.io/"  // 域名#endif // VERSION_H
  1. 新建一个.rc文件
#include "winres.h"       // 引入 Windows 资源文件头,包含常见的资源类型定义
#include "version.h"      // 引入自定义的版本信息头文件,定义了版本、公司等常量// 图标资源定义
IDI_ICON1       ICON      PRODUCT_ICON  // 定义一个图标资源,使用 'PRODUCT_ICON' 作为图标的文件名// 版本信息资源定义
VS_VERSION_INFO VERSIONINFO  // 定义版本信息资源块FILEVERSION FILE_VERSION  // 文件版本号,引用 FILE_VERSION 宏PRODUCTVERSION PRODUCT_VERSION  // 产品版本号,引用 PRODUCT_VERSION 宏FILEFLAGSMASK 0x3fL  // 允许的文件标志位掩码,0x3fL 表示保留所有标志#ifdef _DEBUG  // 如果是在调试模式下FILEFLAGS 0x1L  // 设置调试标志位,0x1L 表示调试版本#else  // 如果是发布模式FILEFLAGS 0x0L  // 设置文件标志位为 0,表示发布版本#endifFILEOS 0x40004L  // 操作系统类型,0x40004L 通常表示 Windows 32 位操作系统FILETYPE 0x1L  // 文件类型,0x1L 表示可执行文件FILESUBTYPE 0x0L  // 文件子类型,0x0L 通常表示通用子类型
BEGINBLOCK "StringFileInfo"  // 定义包含文件信息字符串的块BEGINBLOCK "080404b0"  // 语言/区域标识符,"080404b0" 是简体中文(中国)的标识符BEGINVALUE "CompanyName", COMPANY_NAME  // 公司名称,引用 COMPANY_NAME 宏VALUE "FileDescription", "职代会评测统计程序/2517285841@qq.com"  // 文件描述,描述程序用途VALUE "FileVersion", FILE_VERSION_STR  // 文件版本字符串,引用 FILE_VERSION_STR 宏VALUE "InternalName", INTERNAL_NAME  // 内部文件名称,引用 INTERNAL_NAME 宏VALUE "LegalCopyright", LEGAL_COPYRIGHT  // 法律版权信息,引用 LEGAL_COPYRIGHT 宏VALUE "OriginalFilename", ORIGINAL_FILE_NAME  // 原始文件名称,引用 ORIGINAL_FILE_NAME 宏VALUE "ProductName", PRODUCT_NAME  // 产品名称,引用 PRODUCT_NAME 宏VALUE "ProductVersion", PRODUCT_VERSION_STR  // 产品版本字符串,引用 PRODUCT_VERSION_STR 宏ENDENDBLOCK "VarFileInfo"  // 版本信息中的可变数据块BEGINVALUE "Translation", 0x804, 1200  // 翻译信息,0x804 表示简体中文(中国),1200 为编码(通常是 UTF-8)END
END
  1. CMake中加入编译
add_executable(zdhmain.cpputils.hutils.cppwidget.hwidget.cppwidget.uicardconfig.hres.qrcversion.hzdh.rc
)
  1. 编译并查看结果
    在这里插入图片描述
    这里附上一些常用的配置项说明,更多使用可以查看微软的文档。
    在这里插入图片描述

http://www.mrgr.cn/news/81603.html

相关文章:

  • 青少年编程与数学 02-005 移动Web编程基础 03课题、流式布局
  • Substrate Saturday 回顾:如何利用 Polkadot Cloud 扩展 Solana 网络服务?
  • Nginx的性能分析与调优简介
  • ReconX: Reconstruct Any Scene from Sparseviews with Video Diffusion Model 论文解读
  • 查询 MySQL 默认的存储引擎(SELECT @@default_storage_engine;)
  • Docker服务发现新纪元:探索Consul的无限魅力
  • android13 系统文字大小和显示大小的修改
  • AI科研助手开发总结:向量与数据权限的应用(三)
  • 【Linux】编写简易shell 深度理解命令行解释器 环境变量 内建命令
  • 数据库概论
  • 将一个组件的propName属性与父组件中的variable变量进行双向绑定的vue3(组件传值)
  • SpringCloudAlibaba实战入门之路由网关Gateway初体验(十)
  • 【可靠有效】springboot使用netty搭建TCP服务器
  • 《机器学习》从入门到实战(1)
  • 《机器学习》——KNN算法
  • QT集成intel RealSense 双目摄像头
  • 新浪微博C++面试题及参考答案
  • 细说EEPROM芯片24C02的基础知识及其驱动程序设计
  • 【达梦数据库】小版本升级之bin文件替换
  • 是德 皮安表Keysight B2980 系列常用指令 附带说明书原件
  • E-commerce .net+React(一)——项目初始化
  • Java数组深入解析:定义、操作、常见问题与高频练习
  • 高性能编程,C++的无锁和有锁编程方法的性能对比
  • 2023 年 12 月青少年软编等考 C 语言四级真题解析
  • 字节跳动Java开发面试题及参考答案(数据结构算法-手撕面试题)
  • Anaconda搭建Python虚拟环境并在Pycharm中配置(小白也能懂)