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

Qt5新手必看:3分钟搞定你的第一个控制台程序(附完整代码)

Qt5入门实战从零构建控制台应用的完整指南引言为什么选择Qt5作为开发起点对于刚接触C图形界面开发的程序员来说Qt框架提供了一个绝佳的起点。它不仅拥有跨平台特性还具备完善的工具链和丰富的模块库。控制台程序作为Qt5最简单的项目类型能帮助开发者快速理解Qt的核心机制而无需立即面对复杂的界面元素。我在指导团队新人时发现从控制台程序入手的学习曲线最为平缓。一个简单的Hello World背后其实包含了Qt应用的基本骨架——事件循环、对象模型和跨平台抽象层。本文将带你用最直接的方式体验Qt5开发的完整流程。1. 开发环境配置1.1 Qt Creator安装与设置Qt官方提供了集成开发环境Qt Creator这是最便捷的Qt开发方式。以下是安装要点下载Qt在线安装器Qt Maintenance Tool选择最新稳定版的Qt5如5.15.x系列勾选对应平台的编译器套件WindowsMinGW 64-bitmacOSClangLinuxGCC提示安装时建议勾选Qt Charts等常用模块避免后续需要时重新安装安装完成后打开Qt Creator检查工具链是否配置正确# 在终端验证qmake版本 qmake -v # 应输出类似QMake version 3.1 Using Qt version 5.15.2...1.2 创建第一个项目在Qt Creator中新建项目时选择Non-Qt Project下的Plain C Application项目配置示例 - 名称HelloQtConsole - 路径~/projects/qt_learning - 构建系统qmake - 语言标准C172. 项目结构与核心代码解析2.1 自动生成的文件解析Qt Creator会生成以下基础文件结构HelloQtConsole/ ├── HelloQtConsole.pro # 项目配置文件 ├── main.cpp # 程序入口文件 └── (构建目录).pro文件是qmake的工程描述文件基础内容如下QT - gui CONFIG console CONFIG - app_bundle TARGET HelloQtConsole SOURCES main.cpp关键配置说明QT - gui移除GUI模块依赖CONFIG console声明为控制台程序TARGET指定生成的可执行文件名2.2 编写核心逻辑修改main.cpp实现基础功能#include QCoreApplication #include QDebug int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); qDebug() 欢迎来到Qt5世界; qDebug() 当前Qt版本 qVersion(); QObject::connect(app, QCoreApplication::aboutToQuit, [](){ qDebug() 程序即将退出...; }); return app.exec(); }代码亮点解析QCoreApplicationQt控制台应用的核心类qDebug()Qt提供的调试输出流qVersion()获取Qt运行时版本app.exec()启动事件循环3. 高级功能扩展3.1 添加命令行参数处理Qt提供了QCommandLineParser类来简化参数解析#include QCommandLineParser // 在main函数中添加 QCommandLineParser parser; parser.setApplicationDescription(示例Qt控制台程序); parser.addHelpOption(); parser.addVersionOption(); // 添加自定义选项 parser.addOption({{n, name}, 用户名称, username}); if (!parser.parse(app.arguments())) { qCritical() parser.errorText(); return 1; } if (parser.isSet(name)) { qInfo() 你好, parser.value(name); }3.2 使用信号槽机制即使是在控制台程序中也可以体验Qt的信号槽系统#include QTimer // 创建定时器 QTimer timer; timer.setInterval(1000); QObject::connect(timer, QTimer::timeout, [](){ static int count 0; qInfo() 定时器触发: count; }); timer.start();4. 构建与调试技巧4.1 多平台构建配置在.pro文件中添加条件判断# 平台特定配置 win32 { CONFIG console RC_ICONS icon.ico } unix:!macx { LIBS -lpthread } macx { QMAKE_INFO_PLIST Info.plist }4.2 调试输出优化Qt提供了多级日志系统// 设置日志过滤器 qSetMessagePattern([%{time yyyy-MM-dd hh:mm:ss}] %{type} %{message}); // 不同级别的日志输出 qDebug() 调试信息; qInfo() 常规信息; qWarning() 警告信息; qCritical() 错误信息;可在运行时通过环境变量控制日志级别# Linux/macOS export QT_LOGGING_RULES*.debugtrue # Windows set QT_LOGGING_RULES*.debugtrue5. 项目打包与分发5.1 Windows平台打包使用windeployqt工具自动收集依赖# 进入构建目录 cd build-HelloQtConsole-Release windeployqt --compiler-runtime HelloQtConsole.exe5.2 Linux/macOS打包创建简单的安装脚本#!/bin/bash # install.sh BUILD_DIRbuild-HelloQtConsole-Release INSTALL_PREFIX/usr/local mkdir -p $INSTALL_PREFIX/bin cp $BUILD_DIR/HelloQtConsole $INSTALL_PREFIX/bin/6. 实际应用案例简易计算器结合所学知识实现一个支持基本运算的控制台计算器#include QCoreApplication #include QCommandLineParser #include QDebug #include cmath enum Operation { Add, Subtract, Multiply, Divide }; int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QCommandLineParser parser; parser.addPositionalArgument(x, 第一个操作数); parser.addPositionalArgument(op, 运算符(-*/)); parser.addPositionalArgument(y, 第二个操作数); if (!parser.parse(app.arguments())) { qCritical() 错误: parser.errorText(); return 1; } const QStringList args parser.positionalArguments(); if (args.size() ! 3) { qCritical() 用法: calculator x op y; return 1; } bool ok; double x args[0].toDouble(ok); if (!ok) { qCritical() 无效数字: args[0]; return 1; } double y args[2].toDouble(ok); if (!ok) { qCritical() 无效数字: args[2]; return 1; } Operation op; if (args[1] ) op Add; else if (args[1] -) op Subtract; else if (args[1] *) op Multiply; else if (args[1] /) op Divide; else { qCritical() 无效运算符: args[1]; return 1; } double result; switch(op) { case Add: result x y; break; case Subtract: result x - y; break; case Multiply: result x * y; break; case Divide: if (y 0) { qCritical() 错误: 除数不能为零; return 1; } result x / y; break; } qInfo() 结果: result; return 0; }使用示例./calculator 3.14 * 2.718 # 输出结果: 8.53452

相关文章:

Qt5新手必看:3分钟搞定你的第一个控制台程序(附完整代码)

Qt5入门实战:从零构建控制台应用的完整指南 引言:为什么选择Qt5作为开发起点? 对于刚接触C图形界面开发的程序员来说,Qt框架提供了一个绝佳的起点。它不仅拥有跨平台特性,还具备完善的工具链和丰富的模块库。控制台程序…...

OpenClaw 部署指南 (Linux)版本原始安装。

OpenClaw 部署指南 (Linux)版 这阵子工作忙得离谱,连折腾新东西的时间都没有。 “龙虾”的风吹过了,寻思着也不能一直当吃瓜群众,就跟一手,看看这玩意到底有多神。 老规矩,不整那些花里胡哨的,先本地跑起来再说。一步一步来,比一上来就搞什么生产环境靠谱多了。 这几…...

WarcraftHelper终极指南:5大核心功能让魔兽争霸3在现代系统完美运行

WarcraftHelper终极指南:5大核心功能让魔兽争霸3在现代系统完美运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款…...

【架构师老王】AI真的在“杀死”软件吗?从系统烟囱到Agent时代的非侵入式重构

摘要 近期,“AI杀死软件”的论调在硅谷和国内技术圈闹得沸沸扬扬。作为一名在企业架构领域摸爬滚打15年的老兵,我见证了从单机版到SOA,再到微服务与云原生的每一次浪潮。客观来讲,AI杀死的并不是“软件”本身,而是那些…...

AI结对编程:借助快马平台智能生成qclaw官网的AI功能模块

最近在开发qclaw官网时,尝试用AI辅助完成了一个合同条款分析功能,整个过程比想象中顺畅很多。这个功能的核心是让用户输入合同文本后,自动评估风险等级并给出提示。下面分享下具体实现思路和与AI协作的实践经验。 功能设计要点 首先明确这个…...

3步实战指南:轻松搭建抖音直播间弹幕数据抓取系统

3步实战指南:轻松搭建抖音直播间弹幕数据抓取系统 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取(2024最新版本) 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 想象一下,你…...

提升开发效率与视觉舒适度:LxgwWenKai字体全场景配置指南

提升开发效率与视觉舒适度:LxgwWenKai字体全场景配置指南 【免费下载链接】LxgwWenKai LxgwWenKai: 这是一个开源的中文字体项目,提供了多种版本的字体文件,适用于不同的使用场景,包括屏幕阅读、轻便版、GB规范字形和TC旧字形版。…...

嵌入式通信协议SPI/I2C/UART原理与应用

嵌入式通信协议原理图解与技术解析1. 串行通信协议基础1.1 SPI通信协议SPI(Serial Peripheral Interface)是一种全双工、同步串行通信协议,采用主从架构设计。其核心特点包括:四线制结构:SCLK(时钟)、MOSI(主出从入)、MISO(主入从出)、SS(片选…...

大模型应用指南:小白程序员必收藏,轻松入门AI前沿技术!

2025年大模型技术已在IT、金融、制造等领域广泛应用,从智能客服到数据分析,助力企业转型。沙丘智库《大模型应用跟踪月报》收录504个案例,揭示行业分布、应用场景及发展趋势。大模型不仅是技术突破,更是时代标志,小白程…...

大模型“预训练”是怎么回事

经常在想,大模型是怎么学会“理解和生成语言”的。仔细看,它的训练过程其实很有规律,简单讲可以拆解成几个步骤。数据准备 训练大模型之前,最重要的是数据。我看到的做法是从各种网络资源收集海量文本,比如网页、书籍、…...

ElasticSearch查询集群及设置

Elasticsearch查询集群API示例 查看集群状态及监控 参考资料 https://www.elastic.co/guide/en/elasticsearch/reference/6.6/cluster-health.html https://www.elastic.co/guide/en/elasticsearch/reference/6.6/cluster-nodes-stats.html 查看集群状态 健康状态 curl -XGE…...

YOLOv8工业缺陷检测推理延迟骤降63%:基于TensorRT量化+ONNX Runtime定制化内核的完整链路

第一章:YOLOv8工业缺陷检测推理延迟骤降63%:基于TensorRT量化ONNX Runtime定制化内核的完整链路在高吞吐产线场景下,YOLOv8原生PyTorch模型在Jetson AGX Orin上单帧推理延迟达84.2ms(输入尺寸640640),严重制…...

Untrunc:10倍速视频修复工具,让损坏的MP4/MOV文件起死回生

Untrunc:10倍速视频修复工具,让损坏的MP4/MOV文件起死回生 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 你是否曾经因为视频文件损坏而失去…...

【Python多解释器隔离终极指南】:20年CTO亲授GIL绕过术、内存隔离与并发安全实战(附可运行代码库)

第一章:Python多解释器隔离的核心概念与演进脉络Python长期以来以全局解释器锁(GIL)为标志性设计,单进程内仅能存在一个活跃的CPython解释器状态(PyInterpreterState),这使得“多解释器”长期处…...

用 OpenAI Codex 打造你的 AI 结对编程助手

用 OpenAI Codex 打造你的 AI 结对编程助手 告别重复劳动,让 AI 直接帮你写代码、修 Bug、跑测试 在 AI 编程工具层出不穷的今天,OpenAI Codex 依然是许多开发者心目中的“神器”。与普通的代码补全工具不同,Codex 是一款终端原生的 AI 编程助…...

RT-Thread Nano 3.0.3移植STM32F103后,第一个实战:用FinSH组件实现串口命令行调试

RT-Thread Nano 3.0.3移植STM32F103实战:FinSH组件实现串口命令行调试 当你成功将RT-Thread Nano移植到STM32F103开发板后,第一个令人兴奋的里程碑就是让系统真正"活"起来——而FinSH组件正是实现这一目标的完美起点。这个内置的命令行交互工具…...

别再手动搬虚拟机了!vSphere DRS全自动负载均衡保姆级配置指南(附规则避坑)

别再手动搬虚拟机了!vSphere DRS全自动负载均衡保姆级配置指南(附规则避坑) 想象一下这样的场景:凌晨三点,你被监控告警惊醒——某台ESXi主机CPU负载飙升至95%,而同一集群内其他主机资源利用率不足30%。你不…...

Python多线程真能并行了吗?(GIL绕过技术全图谱:subprocess/numba/multiprocessing/cython/rustpy)

第一章:Python无锁GIL环境下的并发模型面试题汇总Python 的全局解释器锁(GIL)长期被视为多线程并发的瓶颈,但近年来随着 CPython 3.13 引入实验性无锁 GIL(--without-pymalloc 配合 --with-per-object-gil 原型&#x…...

雷电模拟器装Magisk后,自带的文件管理器为啥打不开/data?用MT管理器一招搞定

雷电模拟器Magisk环境下文件管理器的权限困局与实战解决方案 当你在雷电模拟器中成功安装Magisk后,可能会遇到一个令人困惑的现象:原本可以自由访问系统目录的自带文件管理器,突然对/data和/system等关键路径"视而不见"。这并非模拟…...

生物认证锁:用虹膜加密核心模块——软件测试从业者的专业指南

在数字化转型浪潮中,生物认证技术正重塑安全防护体系,其中虹膜识别凭借其超高精度和防伪特性,成为加密核心模块(如支付系统、数据库访问控制或敏感API)的首选方案。作为软件测试从业者,您肩负着验证系统鲁棒…...

douyin-downloader:智能抖音视频全流程管理工具,让内容收集效率提升90%

douyin-downloader:智能抖音视频全流程管理工具,让内容收集效率提升90% 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader douyin-downloader是一款开源的抖音视频批量下载与管理工具&am…...

企业高效知识体系:8大核心特征+可落地搭建框架,告别知识散乱

对于企业而言,知识从来不是“文件堆”,而是能支撑业务、培养新人、规避风险的核心资产。很多企业陷入“文档满天飞、新人没人带、老员工离职带跑经验”的困境,本质是没有搭建起高效、完整的知识体系。今天就一次性讲透:一个能真正…...

别再乱填了!手把手教你配置Keil的IROM1和IRAM1,让STM32程序跑得更稳

深度解析Keil内存配置:从原理到实战的STM32开发指南 当你第一次在Keil MDK的"Target"选项卡中看到IROM1和IRAM1的配置项时,是否感到困惑?这些看似简单的地址和大小设置,实际上关系到整个嵌入式系统的稳定运行。许多开发…...

Python实战:5分钟搞定小红书自动点赞脚本(附完整代码)

Python实战:5分钟实现小红书自动化互动工具开发指南 在当今内容爆炸的时代,社交媒体运营已成为个人品牌和商业推广的重要阵地。小红书作为国内领先的生活方式分享平台,其互动数据直接影响内容曝光和账号权重。对于开发者而言,掌握…...

从智慧灯杆到无人驾驶:如何用Raspberry Pi 4和Arduino搭建微型智慧城市实验平台

从智慧灯杆到无人驾驶:如何用Raspberry Pi 4和Arduino搭建微型智慧城市实验平台 在创客文化和高校工程教育中,低成本硬件的创新应用正掀起一场微型智慧城市实验的革命。只需一块树莓派主板、几个传感器和开源软件,就能在桌面上复现价值数百万…...

Taskbar-Lyrics:Windows 11任务栏歌词嵌入终极指南

Taskbar-Lyrics:Windows 11任务栏歌词嵌入终极指南 【免费下载链接】Taskbar-Lyrics BetterNCM插件,在任务栏上嵌入歌词,目前仅建议Windows 11 项目地址: https://gitcode.com/gh_mirrors/ta/Taskbar-Lyrics 在Windows 11上享受沉浸式…...

so-vits-svc声压级标准化终极指南:如何避免AI语音转换中的音频质量损伤

so-vits-svc声压级标准化终极指南:如何避免AI语音转换中的音频质量损伤 【免费下载链接】so-vits-svc SoftVC VITS Singing Voice Conversion 项目地址: https://gitcode.com/gh_mirrors/so/so-vits-svc so-vits-svc作为当前最先进的AI歌声转换框架&#xff…...

农业气象监测系统—实时感知・远程管控・智能预警

在农业现代化向纵深推进的当下,气象数据已成为农业生产的 “核心指挥棒”。烟台中盾信息科技有限公司(下称 “烟台中盾科技”)紧扣农业农村发展需求,以物联网、大数据技术为基石,打造农业气象监测系统,构建…...

Souliss嵌入式状态同步框架:轻量级去中心化智能家居通信实践

1. Souliss 智能家居网络框架深度解析:面向嵌入式工程师的底层通信架构实践指南Souliss 是一个专为资源受限嵌入式节点设计的轻量级、去中心化智能家居网络框架。其核心目标并非构建通用物联网平台,而是解决真实家庭场景中多协议共存、低功耗节点协同、边…...

从零到上线:用Vue3+AntV G2快速搭建企业级数据大屏

从零到上线:用Vue3AntV G2快速搭建企业级数据大屏 在数字化转型浪潮中,数据可视化已成为企业决策的重要支撑。想象这样一个场景:会议室里,高管们围坐在大屏前,实时业务数据通过动态图表清晰呈现,关键指标一…...