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

QT的工程文件认识

目录

1、QT介绍

2、QT的特点

3、QT模块

3.1基本模块

3.2扩展模块

4、QT工程创建

1.选择应用的窗体格式

2.设置工程的名称与路径

3.设置类名

4.选择编译器

5、QT 工程解析

xxx.pro 工程配置

xxx.h 头文件

main.cpp 主函数

xxx.cpp 文件

6、纯手工创建一个QT 工程

1.创建一个纯C++ 工程

2.在xxx.pro 添加模块

3.设计界面代码

7、UI文件设计界面


1、QT介绍

百度百科的解释:

Qt [1] 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。

简单理解:QT 就是使用C++ 封装的一个图形界面库。

QT是通用的C++开发界面框架( C++ 图形用户界面 应用程序开发框架。)它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。

历史

1991年由QT公司开发跨平台C++图形用户界面应用程序开发框架。

2008年,Qt Company科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。 2012年,Qt被Digia收购

版本 QT4---2009 QT5---2013 --主流版本 QT6---2021

特点 跨平台、面向对象、丰富的API

应用

咪咕音乐:咪咕音乐是中国移动倾力打造的正版音乐播放器

WPS Office:金山软件公司推出的办公软件

极品飞车:EA公司出品的著名赛车类游戏

2、QT的特点

QT的特点就是跨平台性很强,在QT中设计的界面可以放入不同的平台下运行如下图

嵌入式: 不同芯片型号的开发板 gec6818,rk1808,rk3399 .. 桌面端: windows ,ios ,linux ... 移动端: Android 微控制器: STM32 在QT 开发的程序可以在上述平台上运行!

3、QT模块

QT本身不是一种编程语言,而是一个用标准C++编写的跨平台开发类库,它对标准C++进行了很多扩展,引入很多新的概念和功能,比如信号与槽函数等等。同时为开发GUI应用程序和非GUI应用程序提供了各种类,QT类库中各种类是以模块的形式分类组织,一个模块就是一个编程主题比如数据库、网络、多线程等等

3.1基本模块

3.2扩展模块

4、QT工程创建

1.选择应用的窗体格式

项目选择Application,也就是创建一个Qt应用程序,那么右边就是选择以什么方式创建

Qt WidgetsAppliction 是基于c++语言的窗口工程

Qt Console Application 基于C++的控制台工程

Qtfor Python-Empty 创建基于Python的空工程。

Qtfor Python-window 创建基于Python的窗口工具。

Qt QuickApplication -Empty 创建基于QML的快速应用空工程。

Qt Quick Application -Scroll创建基于QML滑动窗口工程。

Qt Quick Application -Stack创建基于QML的栈窗口工程。

Qt QuickApplication -Swipe创建基于QML的触摸移动窗口工程

2.设置工程的名称与路径

3.设置类名

4.选择编译器

5、QT 工程解析

MVC模式:经典MVC模式中,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View的定义比较清晰,就是用户界面。模型-视图-控制器(MVC)

xxx.pro 工程配置

#添加QT 模块,现有模块才有类
QT       += core gui
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#默认的编译器路径 
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

xxx.h 头文件

//防止头文件重复包含
#ifndef MAINWINDOW_H
#define MAINWINDOW_H//包含QMainWindow头文件
#include <QMainWindow>//宏定义 作用:用于关联 XXXX.UI文件
QT_BEGIN_NAMESPACE//定义一个UI 的命名空间包含MainWindow
namespace Ui { class MainWindow; }
//宏定义
QT_END_NAMESPACE//定义一个MainWindow类公共继承 QMainWindow
class MainWindow : public QMainWindow
{//宏定义 作用:用于实现信号与槽Q_OBJECTpublic://构造函数MainWindow(QWidget *parent = nullptr);//析构函数~MainWindow();private:Ui::MainWindow *ui; //定义一个私有成员 ui
};
#endif // MAINWINDOW_H

main.cpp 主函数

//添加用户自定义的mainwindow.h头文件
#include "mainwindow.h"//添加系统应用头文件
#include <QApplication>//主函数
int main(int argc, char *argv[])
{//创建一个应用对象QApplication a(argc, argv);//创建一个自定义窗体类MainWindow w;//显示窗体w.show();//执行应用return a.exec();
}

xxx.cpp 文件

//添加头文件 
#include "mainwindow.h"
//QT软件 自动生成窗体头文件 
#include "ui_mainwindow.h"//构造函数                         参数列表初始化 传递parent给父类  初始化UI指针
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{//调用ui类里面的setupUi函数ui->setupUi(this);
}//析构函数
MainWindow::~MainWindow()
{//释放构造函数分配的堆空间 delete ui;
}

6、纯手工创建一个QT 工程

1.创建一个纯C++ 工程

2.在xxx.pro 添加模块

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle#添加QT 3大模块
QT       += core gui widgetsSOURCES += \main.cppQT本身不是一种编程语言,而是一个用标准C++编写的跨平台开发类库,它对标准C++进行了很多扩展,引入很多新的概念和功能,比如信号与槽函数等等。同时为开发GUI应用程序和非GUI应用程序提供了各种类,QT类库中各种类是以模块的形式分类组织,一个模块就是一个编程主题,比如数据库、网络、多线程等等。Qt Core模块:是QT类库的核心,所有其他模块都依赖这个模块。
Qt Gui模块:提供GUI程序的基本功能。
Qt Network模块:提供跨平台的网络功能。
Qt Widgets模块:提供创建用户界面的功能。

3.设计界面代码

创建QT应用对象QApplication,创建窗体对象QMainWindow,创建标签对象QLabel
需要包含对对应的头文件#include<QApplication><QMainWindow><QLabel>
退出的时候需要使用应用对象.exec()#include <iostream>using namespace std;//添加QT应用头文件
#include <QApplication>//添加自带窗体头文件
#include <QMainWindow>//添加标签头文件
#include <QLabel>int main(int argc, char **argv)
{//创建一个QT应用对象QApplication a(argc,argv);cout << "Hello World!" << endl;//创建一个窗体对象 ,必须要在创建窗体前创建一个应用,因为所有窗体都是在应用上面的QMainWindow  w;//创建一个标签对象,w对象是他的父亲QLabel lb(&w);lb.setText("今天真凉快"); //设置标签的内容lb.setGeometry(50,50,100,100); //设置标签的位置lb.show(); //显示标签//显示窗体w.show();//一直执行return a.exec();}

7、UI文件设计界面

UI的原理:当用户修改UI界面文件后,界面未发生任何改变,那么就要自己去修改 ui_xxxx.h 文件

相关文章:

QT的工程文件认识

目录 1、QT介绍 2、QT的特点 3、QT模块 3.1基本模块 3.2扩展模块 4、QT工程创建 1.选择应用的窗体格式 2.设置工程的名称与路径 3.设置类名 4.选择编译器 5、QT 工程解析 xxx.pro 工程配置 xxx.h 头文件 main.cpp 主函数 xxx.cpp 文件 6、纯手工创建一个QT 工程…...

typeScript安装及TypeScript tsc 不是内部或外部命令,也不是可运行的程序或批处理文件解决办法

一、typeScript安装&#xff1a; 1、首先确定系统中已安装node, winr 输入cmd 打开命令行&#xff0c;得到版本号证明系统中已经安装node node -v //v18.17.0 2、使用npm 全局安装typeScript # 全局安装 TypeScript npm i -g typescript 二、检查是否安装成功ts #检查t…...

SWUST 派森练习题:P111. 摩斯密码翻译器

描述 摩斯密码&#xff08;morse code)&#xff0c;又称摩斯电码、摩尔斯电码&#xff08;莫尔斯电码&#xff09;&#xff0c;是一种时通时断的信号代码&#xff0c;通过不同的信号排列顺序来表达不同的英文字母、数字和标点符号&#xff1b;通信时&#xff0c;将英文字母等内…...

如何在控制台查看excel内容

背景 最近发现打开电脑的excel很慢&#xff0c;而且使用到的场景很少&#xff0c;也因为mac自带了预览的功能。但是shigen就是闲不住&#xff0c;想自己搞一个excel预览软件&#xff0c;于是在一番技术选型之后&#xff0c;我决定使用python在控制台显示excel的内容。 具体的需…...

Echarts、js编写“中国主要城市空气质量对比”散点图 【亲测】

本次实验通过可视化工具Echarts来对全国主要城市的&#xff30;&#xff2d;2.5的值进行直观的展示&#xff0c;使人们可以快速的发现信息的关键点&#xff0c;从而对各个城市的空气质量情况有直观的了解。 先看效果 上代码&#xff1a; <!DOCTYPE html> <html>&…...

linux不分区直接在文件系统根上开swap

root下&#xff0c;直接创swapfile dd if/dev/zero of/swapfile bs1M count8192然后 mkswap swapfile swapon swapfile修改fstab # /etc/fstab: static file system information. # # Use blkid to print the universally unique identifier for a # device; this may be us…...

React请求机制优化思路 | 京东云技术团队

说起数据加载的机制&#xff0c;有一个绕不开的话题就是前端性能&#xff0c;很多电商门户的首页其实都会做一些垂直的定制优化&#xff0c;比如让请求在页面最早加载&#xff0c;或者在前一个页面就进行预加载等等。随着react18的发布&#xff0c;请求机制这一块也是被不断谈起…...

CompletableFuture总结和实践

CompletableFuture被设计在Java中进行异步编程。异步编程意味着在主线程之外创建一个独立的线程&#xff0c;与主线程分隔开&#xff0c;并在上面运行一个非阻塞的任务&#xff0c;然后通知主线程进展&#xff0c;成功或者失败。 一、概述 1.CompletableFuture和Future的区别&…...

使用Nginx调用网关,然后网关调用其他微服务

问题前提&#xff1a;目前我的项目是已经搭建了网关根据访问路径路由到微服务&#xff0c;然后现在我使用了Nginx将静态资源都放在了Nginx中&#xff0c;然后我后端定义了一个接口访问一个html页面&#xff0c;但是html页面要用到静态资源&#xff0c;这个静态资源在我的后端是…...

windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】

windows搭建WebDAV服务&#xff0c;并内网穿透公网访问【无公网IP】 文章目录 windows搭建WebDAV服务&#xff0c;并内网穿透公网访问【无公网IP】1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访…...

PAT 1097 Deduplication on a Linked List

个人学习记录&#xff0c;代码难免不尽人意 Given a singly linked list L with integer keys, you are supposed to remove the nodes with duplicated absolute values of the keys. That is, for each value K, only the first node of which the value or absolute value o…...

Flink 数据集成服务在小红书的降本增效实践

摘要&#xff1a;本文整理自实时引擎研发工程师袁奎&#xff0c;在 Flink Forward Asia 2022 数据集成专场的分享。本篇内容主要分为四个部分&#xff1a; 小红书实时服务降本增效背景Flink 与在离线混部实践实践过程中遇到的问题及解决方案未来展望 点击查看原文视频 & 演…...

jellyfin使用ipv6+DDNS实现外网访问

前言 原本使用frp的方案进行外网访问jellyfin&#xff0c;但是阿里云的轻量服务器的带宽只有5M&#xff0c;只能支持看1080p的视频&#xff0c;看4K有点吃力&#xff0c;为了有更好的观影体验&#xff0c;选择ipv6DDNS的方式实现外网访问&#xff0c;此方案能跑满群晖的上行带宽…...

Codeforces EDU 151 Div.2

文章目录 A. Forbidden IntegerB. Come TogetherC. Strong PasswordD. Rating SystemE. Boxes and Balls A. Forbidden Integer Problem - A - Codeforces 给定整数n&#xff0c;从1~k中选择除了x的数&#xff0c;使这些数之和为n&#xff0c;每个数可以选择无限次 爆搜&…...

V2board缓存投毒漏洞复现

1.什么是缓存投毒 缓存投毒&#xff08;Cache poisoning&#xff09;&#xff0c;通常也称为域名系统投毒&#xff08;domain name system poisoning&#xff09;&#xff0c;或DNS缓存投毒&#xff08;DNS cache poisoning&#xff09;。它是利用虚假Internet地址替换掉域名系…...

2023面试八股文 ——Java基础知识

Java基础知识 一.Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性&#xff1f;原理是什么Java语言有哪些特点什么是字节码&#xff1f;采用字节码的大好处是什么什么是Java程序的主类&#xff1f;应用程序和小程序的主类有何不同&#xff1f…...

在linux系统中修改mysql数据目录

目录 1.查看mysql默认存储路径2.停止mysql服务3.移动或复制原数据目录4.修改配置文件5.修改启动文件6.配置AppArmor访问控制规则7.重启apparmor服务8.启动mysql 1.查看mysql默认存储路径 在/etc/mysql/mysql.conf.d/mysqld.cnf中的datadir配置项。 datadir /var/lib/mysql2…...

ORB-SLAM2学习笔记9之图像帧Frame

先占坑&#xff0c;明天再完善… 文章目录 0 引言1 Frame类1.1 成员函数1.2 成员变量 2 Frame类的用途 0 引言 ORB-SLAM2学习笔记8详细了解了图像特征点提取和描述子的生成&#xff0c;本文在此基础上&#xff0c;继续学习ORB-SLAM2中的图像帧&#xff0c;也就是Frame类&#…...

面试热题(不同的二分搜索树)

给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 经典的面试题&#xff0c;这部分涉及了组合数学中的卡特兰数&#xff0c;如果对其不清楚的同学可以去看我以前的博客卡特兰数 …...

MybatisPlus整合p6spy组件SQL分析

目录 p6spy java为什么需要 如何使用 其他配置 p6spy p6spy是一个开源项目&#xff0c;通常使用它来跟踪数据库操作&#xff0c;查看程序运行过程中执行的sql语句。 p6spy将应用的数据源给劫持了&#xff0c;应用操作数据库其实在调用p6spy的数据源&#xff0c;p6spy劫持到…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解

进来是需要留言的&#xff0c;先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码&#xff0c;输入的<>当成字符串处理回显到页面中&#xff0c;看来只是把用户输…...

基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)

注&#xff1a;文章末尾网盘链接中自取成品使用演示视频、项目源码、项目文档 所用硬件&#xff1a;STM32F103C8T6、无源蜂鸣器、44矩阵键盘、flash存储模块、OLED显示屏、RGB三色灯、面包板、杜邦线、usb转ttl串口 stm32f103c8t6 面包板 …...

SQL注入篇-sqlmap的配置和使用

在之前的皮卡丘靶场第五期SQL注入的内容中我们谈到了sqlmap&#xff0c;但是由于很多朋友看不了解命令行格式&#xff0c;所以是纯手动获取数据库信息的 接下来我们就用sqlmap来进行皮卡丘靶场的sql注入学习&#xff0c;链接&#xff1a;https://wwhc.lanzoue.com/ifJY32ybh6vc…...

【QT控件】显示类控件

目录 一、Label 二、LCD Number 三、ProgressBar 四、Calendar Widget QT专栏&#xff1a;QT_uyeonashi的博客-CSDN博客 一、Label QLabel 可以用来显示文本和图片. 核心属性如下 代码示例: 显示不同格式的文本 1) 在界面上创建三个 QLabel 尺寸放大一些. objectName 分别…...

Axure Rp 11 安装、汉化、授权

Axure Rp 11 安装、汉化、授权 1、前言2、汉化2.1、汉化文件下载2.2、windows汉化流程2.3、 macOs汉化流程 3、授权 1、前言 Axure Rp 11官方下载链接&#xff1a;https://www.axure.com/downloadthanks 2、汉化 2.1、汉化文件下载 链接: https://pan.baidu.com/s/18Clf…...

STM32 低功耗设计全攻略:PWR 模块原理 + 睡眠 / 停止 / 待机模式实战(串口 + 红外 + RTC 应用全解析)

文章目录 PWRPWR&#xff08;电源控制模块&#xff09;核心功能 电源框图上电复位和掉电复位可编程电压监测器低功耗模式模式选择睡眠模式停止模式待机模式 修改主频一、准备工作二、修改主频的核心步骤&#xff1a;宏定义配置三、程序流程&#xff1a;时钟配置函数解析四、注意…...

华为云Flexus+DeepSeek征文|华为云Flexus服务器dify平台通过自然语言转sql并执行实现电商数据分析

目录 前言 1 华为云Flexus服务器部署Dify平台 1.1 华为云Flexus服务器一键部署Dify平台 1.2 设置账号登录Dify&#xff0c;进入平台 2 构建自然语言转SQL并执行的应用 2.1 创建应用并启动工作流设计 2.2 应用框架设计 2.3 自然语言转SQL模块详解 2.4 代码执行模块实现…...