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

QT 1.7 创建第一个Qt项目——大丙

1.7 创建第一个Qt项目——大丙

https://www.bilibili.com/video/BV1Jp4y167R9

以下代码是Qt自动生成的,理解即可

1. 项目文件(.pro)

在创建的Qt项目中自动生成了一个后缀为 .pro 的项目文件,该文件中记录着项目的一些属性信息,具体信息如下:

# 在项目文件中, 注释需要使用 井号(#)
# 项目编译的时候需要加载哪些底层模块(写在后面)
QT       += core gui # 如果当前Qt版本大于4, 会添加一个额外的模块: widgets
# Qt 5中对gui模块进行了拆分, 将 widgets 独立出来了
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets# 使用c++11新特性
CONFIG += c++11	#如果在项目中调用了废弃的函数, 项目编译的时候会有警告的提示    
DEFINES += QT_DEPRECATED_WARNINGS# 项目中的源文件
SOURCES += \main.cpp \mainwindow.cpp# 项目中的头文件
HEADERS += \mainwindow.h# 项目中的窗口界面文件
FORMS += \mainwindow.ui# 后面的内容用不上就不用管

2. main.cpp

在这个源文件中有程序的入口函数 main(),下面给大家介绍下这个文件中自动生成的几行代码:

#include "mainwindow.h"		// 生成的窗口类头文件
#include <QApplication>		// 应用程序类头文件int main(int argc, char *argv[])
{// 创建应用程序对象, 在一个Qt项目中实例对象有且仅有一个// 类的作用: 检测触发的事件, 进行事件循环并处理QApplication a(argc, argv);// 创建窗口类对象MainWindow w;// 显示窗口w.show();// 应用程序对象开始事件循环, 保证应用程序不退出return a.exec();
}

3. mainwindow.ui

在Qt中每一个窗口都对应一个可编辑的可视化界面(*.ui), 这个界面对应的是一个xml格式的文件, 一般情况下不需要在xml格式下对这个文件进行编辑, 关于这个文件结构了解即可。

<!-- 双击这个文件看到的是一个窗口界面, 如果使用文本编辑器打开看到的是一个XML格式的文件 -->
<!-- 看不懂这种格式没关系, 我们不需要在这种模式下操作这个文件。 -->
<!-- 这里只是给大家介绍这个文件的本质 -->
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><!-- 这个是Ui::MainWindow,不是外面那个 --><class>MainWindow</class><widget class="QMainWindow" name="MainWindow"><property name="geometry"><rect><x>0</x><y>0</y><width>800</width><height>600</height></rect></property><property name="windowTitle"><string>MainWindow</string></property><widget class="QWidget" name="centralwidget"/><widget class="QMenuBar" name="menubar"/><widget class="QStatusBar" name="statusbar"/></widget><resources/><connections/>
</ui>

4. mainwindow.h

这个文件是窗口界面对应的类的头文件。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>		// Qt标准窗口类头文件// mainwindow.ui 文件中也有一个类叫 MainWindow, 将这个类放到命名空间 Ui 中
// 这个和外面的MainWindow是没有任何关联的,需要通过创建指针关联
// 因为此时还没声明MainWindow,所以先放进去Ui命名空间,写在MainWindow声明后会报错!
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }	
QT_END_NAMESPACE// 自定义的MainWindow类继承了Qt的标准窗口类
class MainWindow : public QMainWindow
{Q_OBJECT	// 这个宏是为了能够使用Qt中的信号槽机制public:MainWindow(QWidget *parent = nullptr);~MainWindow();private:// 定义指针指向Ui::MainWindow对象,进而关联两个类Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

5. mainwindow.cpp

这个文件是窗口界面对应的类的源文件(也就是自定义的,外面的MainWindow)。

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)// 基于mainwindow.ui创建一个实例对象(Ui::MainWindow的), ui(new Ui::MainWindow)
{// ui是指向Ui::MainWindow的指针(mainwindow.ui的实例对象)// this是当前类的对象(MainWindow)// 将 mainwindow.ui 的实例对象和 当前类的对象进行关联// 这样同名的连个类对象就产生了关联, 合二为一了ui->setupUi(this);
}MainWindow::~MainWindow()
{// 析构释放堆区的Ui::MainWindowdelete ui;
}
http://www.jsqmd.com/news/830788/

相关文章:

  • 终极指南:5步快速掌握FontForge免费字体编辑器,从零到专业字体设计
  • 如何调试connect-history-api-fallback:详细日志配置与问题排查指南
  • Google Cloud语音API免费额度怎么用?手把手教你Android集成Speech-to-Text(附避坑指南)
  • 【独家首发】ElevenLabs Telugu语音模型底层架构解析(基于逆向API响应+语音频谱聚类分析):首次披露其Dravidian语言适配层设计
  • Taotoken模型广场如何辅助开发者进行模型选型
  • 长沙少女写真哪里好?2026年轻女生拍照全攻略 - 麦克杰
  • CircuitPython红外遥控模糊识别:解决信号波动,实现稳定匹配
  • Gowin FPGA 开发实战:从软件配置到硬件调试的完整流程解析
  • 终极指南:如何使用public-apis开源项目快速找到免费API资源
  • Midjourney蛋白印相风格实战手册(含27组实测prompt+显影时间对照表)
  • 5分钟搞定YOLO环境配置:Anaconda+PyTorch+CUDA完整安装指南
  • AI App Lab语音实时通话应用:打造乔青青智能对话伙伴的实践指南
  • Camo SSL图像代理:终极解决混合内容警告的完整指南
  • Oracle正则表达式实战:从数据清洗到智能查询
  • 团队冲刺
  • 从零开始构建你的数字生活指挥中心:Obsidian Homepage深度指南
  • 头部网架供应商甄选指南 全方位优质网架工程定制解决方案,荷载能力强,网架承载重物无忧 - 品牌推荐师
  • 如何快速配置英雄联盟自动化工具:5个高效技巧指南
  • 工业视觉第一课:YOLOv8/v10/v11哪个版本最适合工业缺陷检测?
  • 从ASPP到LR-ASPP:轻量化语义分割的演进之路与核心模块解析
  • 紧急修复!ElevenLabs土耳其语文本预处理失效导致的重音错位问题(附Python自动化清洗脚本)
  • GHelper终极指南:华硕笔记本性能控制工具完整教程
  • ElevenLabs维吾尔文TTS接入全攻略:从API密钥配置、音色微调到低延迟流式合成(含实测RTT<420ms数据)
  • Git Commit Message 规范
  • Blender FLIP Fluids与Mantaflow对比分析:为什么选择专业流体插件
  • ABC 458 (from ACcoder)
  • ElevenLabs法文语音合成效果跃升方案(实测WER降低42.6%!):基于217小时母语语料的声学参数调优手册
  • 如何用RPG Maker解密工具轻松解锁游戏资源?
  • STM32 PWM实战:从呼吸灯到电机控制的完整驱动指南
  • 手把手教你用Kaggle免费GPU跑深度学习模型(附火狐插件解决注册验证码问题)