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

qt使用笔记二:main.cpp详解

Qt中main.cpp文件详解

  • main.cpp是Qt应用程序的入口文件,包含程序的启动逻辑。下面我将详细解析其结构和功能。

基本结构

  • 一个典型的Qt main.cpp 文件结构如下:
#include <QApplication>  // 或者 QGuiApplication/QCoreApplication
#include "mainwindow.h"  // 主窗口头文件int main(int argc, char *argv[])
{// 1. 创建应用程序对象QApplication a(argc, argv);// 2. 创建主窗口对象MainWindow w;// 3. 显示主窗口w.show();// 4. 进入主事件循环return a.exec();
}

详细解析

    1. 应用程序对象创建
QApplication a(argc, argv);
QApplication:管理GUI应用程序的控制流和主要设置/*参数:
argc:命令行参数个数
argv:命令行参数数组替代类:
QGuiApplication:用于不需要QWidget的GUI应用
QCoreApplication:用于非GUI应用 */
    1. 主窗口创建
MainWindow w;    //创建应用程序的主窗口对象//MainWindow通常是继承自QMainWindow的自定义类
//在这一步可以初始化应用程序的各种组件
    1. 显示主窗口
w.show();    //调用show()方法使窗口可见//也可以使用w.showMaximized()或w.showFullScreen()等变体
    1. 进入事件循环
return a.exec();
exec()      //启动应用程序的事件循环//该方法会阻塞,直到应用程序退出
//返回值为应用程序的退出代码

高级用法

  • 命令行参数处理
QApplication a(argc, argv);// 设置应用程序信息
a.setApplicationName("MyApp");
a.setApplicationVersion("1.0.0");// 解析命令行参数
if (a.arguments().contains("--fullscreen")) {w.showFullScreen();
} else {w.show();
}
  • 全局样式设置
// 设置全局样式
a.setStyle("Fusion");// 设置调色板
QPalette palette;
palette.setColor(QPalette::Button, Qt::green);
a.setPalette(palette);// 设置字体
QFont font("Arial", 12);
a.setFont(font);
  • 多语言支持
QTranslator translator;
if (translator.load("myapp_zh_CN.qm", ":/translations")) {a.installTranslator(&translator);
}
  • 高DPI支持
// 启用高DPI缩放
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);// 使用高DPI图标
QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);

实际项目中的常见扩展

  • 初始化检查:
if (!checkDependencies()) {qCritical() << "Missing dependencies";return -1;
}
  • 单例应用检查:
QSharedMemory shared("MyApp");
if (!shared.create(1)) {QMessageBox::warning(nullptr, "Warning", "Application already running");return 0;
}
  • 崩溃处理:
#ifdef Q_OS_WIN
SetUnhandledExceptionFilter(myCrashHandler);
#endif
  • 日志系统初始化:
QFile logFile("app.log");
logFile.open(QIODevice::WriteOnly);
qInstallMessageHandler(myMessageHandler);
  • 注意事项
- 必须在创建QApplication后才能使用GUI相关类- exec()是阻塞调用,之后的代码在程序退出后才会执行- 对于控制台应用,使用QCoreApplication- 现代Qt版本(5.14+)推荐使用QGuiApplication代替QApplication以获得更好的跨平台支持- main.cpp虽然简单,但它是Qt应用程序的起点,合理的初始化设置可以为后续开发奠定良好基础。
http://www.xdnf.cn/news/12726.html

相关文章:

  • STM32的系统滴答定时器简述
  • fast-reid部署
  • LangChain面试内容整理-知识点1:LangChain架构与核心理念
  • 高并发下的缓存击穿/雪崩解决方案
  • 青少年编程与数学 01-011 系统软件简介 08 Windows操作系统
  • JavaWeb基础入门 — SpringBoot Web 案例详解
  • LBE-LEX系列工业语音播报器|AGV语音提示器|工程车音乐报警器操作使用说明
  • 亚川科技IBMS集成管理平台:构建商业综合体智慧中枢
  • LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
  • 1-2 Linux-虚拟机(2025.6.7学习篇- win版本)
  • Android学习总结-GetX库常见问题和解决方案
  • 计算机组成与体系结构:补码数制一(Complementary Number Systems)
  • 振动力学:多自由度系统
  • 快速上手Linux全局搜索正则表达式(grep)
  • 分页查询的实现
  • 29、make_shared
  • GESP 二级复习参考 A
  • 大话软工笔记—需求调研概述
  • Spring Boot 数据访问三剑客:JdbcTemplate、JPA 和 MyBatis 的对决与选择指南
  • 如何判断当前web页面是在钉钉内部打开的?
  • ubuntu服务器件如何配置python环境并运行多个python脚本
  • Xilinx FPGA 重构Multiboot ICAPE2和ICAPE3使用
  • 【LLM】fast-api 流式生成测试
  • MS358A 低功耗运算放大器 车规
  • similarsites网页版入口,一键查询相似网站
  • 露亦如电 · 时之沙 | 让遗憾在灰烬里随风而去
  • 2025 年 Java 核心技术全面升级与深度应用解析
  • 第19节 Node.js Express 框架
  • 平面方程在不同坐标系下的变换与平移
  • Parameter ‘XXX‘ not found. Available parameters are [list, param1]