Qt的applicationName的使用TARGET作为默认值会截断

Qt 中 TARGET 名称包含点号的问题分析

在 Qt 项目中,TARGET 名称中包含点号(.)可能会导致应用名称被截断。这是由于 Qt 内部处理机制对点号有特殊处理,通常会将点号后的内容忽略或视为文件扩展名。

解决方法

方法一:使用连字符替代点号

TARGET 中的点号替换为连字符(-),例如:

qmake 复制代码
TARGET = VCDS-Server

这样可以确保 applicationName()applicationDisplayName() 正确显示完整名称。

方法二:显式设置应用名称

在代码中直接设置应用名称,覆盖 TARGET 的默认行为:

cpp 复制代码
QCoreApplication::setApplicationName("VCDS.Server");
QCoreApplication::setApplicationDisplayName("VCDS.Server");

这种方式可以完全控制名称显示,不受 TARGET 格式限制。

方法三:修改 pro 文件补充设置

在 pro 文件中添加以下配置,显式定义应用名称:

qmake 复制代码
TARGET = VCDS.Server
QMAKE_TARGET_PRODUCT = VCDS.Server
DEFINES += QT_APP_NAME=\\\"VCDS.Server\\\"

这种方法通过定义宏和变量,强制传递完整名称到编译结果中。

问题根源

Qt 在解析 TARGET 名称时,可能将点号视为分隔符,导致后续内容被忽略。这种设计可能是为了兼容文件系统命名习惯或历史遗留原因。连字符(-)和下划线(_)是更安全的替代符号。

相关推荐
努力学习的小廉35 分钟前
【QT(九)】—— 窗口
数据库·qt·系统架构
火山上的企鹅1 小时前
QGC 中修改原生 Android 串口 BUG 实操
qt·串口·qgc·无人机开发
一只小bit1 小时前
Qt 多媒体:快速解决音视频播放问题
前端·c++·qt·音视频·cpp·页面
程序小馆1 小时前
Qt cmake add_subdirectory 后无法使用子模块的资源(如图片、翻译文件)的解决方案
开发语言·qt
努力学习的小廉2 小时前
【QT(十)】—— 系统
开发语言·qt
誰能久伴不乏2 小时前
Qt 启动时序与事件循环:为什么监控启动不要放在构造函数里,以及 `QTimer::singleShot(0, ...)` 到底做了什么
c语言·c++·qt
少控科技2 小时前
QT高阶日记011
开发语言·qt
钱彬 (Qian Bin)10 小时前
项目实践17—全球证件智能识别系统(开发基于LabelMe标注的可视化审核接口)
qt·fastapi·全球证件识别
look ahead to18 小时前
关于PYQT qt designer的网格布局 单控件占多行的处理
开发语言·qt·pyqt
Lution Young21 小时前
Qt隐式共享产生的问题
开发语言·qt