首页 > 其他分享 >QT项目学习

QT项目学习

时间:2024-09-03 18:37:11浏览次数:7  
标签:文件 头文件 Qt 项目 应用程序 学习 模块 QT

打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项

弹出New Project对话框,选择Qt Widgets Application

选择【Choose】按钮,弹出如下对话框

设置项目名称和路径,按照向导进行下一步

选择编译套件

向导会默认添加一个继承自QMainWindow的类,可以在此修改类的名字和基类。默认的基类有QMainWindow、QWidget以及QDialog三个,我们可以选择QWidget(类似于空窗口),这里我们可以先创建一个不带UI的界面,继续下一步

系统会默认给我们添加main.cpp、mywidget.cpp、 mywidget.h和一个.pro项目文件,点击完成,即可创建出一个Qt桌面程序。

2.2 一个最简单的Qt应用程序
2.2.1 main函数中

include "widget.h"

include

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}

解释:

    1.Qt系统提供的类头文件没有.h后缀

    2.Qt一个类对应一个头文件,类名和头文件名一致

    3.QApplication应用程序类

            管理图形用户界面应用程序的控制流和主要设置。

            是Qt生命,一个程序要确保一直运行,就肯定至少得有一个循环,这就是Qt主消息循环,在其中完成来自窗口系统和其它资源的所有事件消息处理和调度。它也处理应用程序的初始化和结束,并且提供对话管理。

            对于任何一个使用Qt的图形用户界面应用程序,都正好存在一个QApplication 对象,不论这个应用程序在同一时刻有多少个窗口。

   4. a.exec()

    程序进入消息循环,等待对用户输入进行响应。这里main()把控制权转交给Qt,Qt完成事件处理工作,当应用程序退出的时候exec()的值就会返回。在exec()中,Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。

2.2.2 类头文件

include

class MyWidget : public QWidget
{
//引入Qt信号和槽机制的一个宏
Q_OBJECT
public:
//构造函数中parent是指父窗口
//如果parent是0,那么窗口就是一个顶层的窗口
MyWidget (QWidget *parent = 0);
~ MyWidget ();
};

2.3 .pro文件
.pro就是工程文件(project),它是qmake自动生成的用于生产makefile的配置文件。类似于VS中的.sln 和vsproj文件。

以下是.pro文件的一个案例:

引入Qt的模块,core gui

QT += core gui

如果qt版本大于4,那么引入widgets模块

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

生成最终文件的文件名,可执行文件exe

TARGET = 01_MyWidget

项目类型,生成什么类型的文件,可执行程序还是库文件

TEMPLATE = app

要编译的源文件列表

SOURCES +=
main.cpp
mywidget.cpp

要编译的头文件列表

HEADERS +=
mywidget.h
.pro文件的规则:

 1.注释

            从“#”开始,到这一行结束。

 2.模块引入

            QT += 模块名,表示当前项目引入Qt哪些模块。

            引入模块的意思就简单理解为引入C/C++头文件搜索路径,如果没引入对应模块就使用该头文件的话会报错说找不到该头文件。当然不必要的模块还是别引入,因为引入模块不仅仅是引入头文件搜索路径那么简单,还包括引入连接的库等一系列操作,会让程序变臃肿。

 3. 模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:TEMPLATE = app

            app -建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。

            lib - 建立一个库的makefile。

            vcapp - 建立一个应用程序的VisualStudio项目文件。

            vclib - 建立一个库的VisualStudio项目文件。

            subdirs -这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。

    4.指定生成的应用程序名:

            TARGET = QtDemo

    5.工程中包含的头文件

            HEADERS += include/painter.h

    6.工程中包含的.ui设计文件

            FORMS += forms/painter.ui

    7.工程中包含的源文件

            SOURCES += sources/main.cpp sources

    8.工程中包含的资源文件

            RESOURCES += qrc/painter.qrc    

    9.greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

    这条语句的含义是,如果QT_MAJOR_VERSION大于4(也就是当前使用的Qt5及更高版本)需要增加widgets模块。如果项目仅需支持Qt5,也可以直接添加“QT += widgets”一句。不过为了保持代码兼容,最好还是按照QtCreator生成的语句编写。

    10.配置信息

    CONFIG用来告诉qmake关于应用程序的配置信息。

           CONFIG += c++11 //使用c++11的特性(qt5.6以上版本默认使用C++11)

           在这里使用“+=”,是因为我们添加我们的配置选项到任何一个已经存在中。这样做比使用“=”那样替换已经指定的所有选项更安全。

标签:文件,头文件,Qt,项目,应用程序,学习,模块,QT
From: https://www.cnblogs.com/1bokeyuanzi/p/18395166

相关文章

  • 物联网通讯协议MQTT、NB-IOT、Zigbee、CoAP、RFID、BLUETOOTH、NFC、4G和HTTP
    物联网协议集一、按网络四层协议分类NB-IoT,LORA,WIFI,蓝牙,zigbee,4G都是物理层的,这几个都需要芯片模组支持(硬件支持)而MQTT,COAP,HTTP都是应用层协议,这些需要开发服务器,或者对接云平台厂商(软件支持)所以(MQTT,COAP,HTTP)是居于(NB-IoT,LORA,WIFI,蓝牙,zigbee,4G)的上层协议物理层中二、按需要网关来分......
  • MQTT揭秘:为什么它是物联网首选的通信协议
    MQTT协议简介概览MQTT是一种基于发布/订阅模式的轻量级消息传输协议,专门针对低带宽和不稳定网络环境的物联网应用而设计,可以用极少的代码为联网设备提供实时可靠的消息服务。MQTT协议广泛应用于物联网、移动互联网、智能硬件、车联网、智慧城市、远程医疗、电力、石油与能源等领......
  • pmp项目管理备考规划xu
    https://e.51cto.com/wejob/list?pid=33&pmpdownload=1制定PMP(项目管理专业人士)考试的备考规划是一个系统的过程,以下是详细的备考步骤和建议:1.了解PMP考试要求确认自己满足PMP考试的资格要求,包括教育背景、项目管理经验等。熟悉PMP考试的内容、格式和评分标准。2.制定备考时间表......
  • 头条新闻平台-项目测试用例设计(Xmind)
    项目功能简介:是一个集新闻浏览,搜索,编辑及用户管理于一体的综合性新闻应用项目。用户模块注册功能界面●界面美观程度●字体是否符合要求●页面布局是否合理●注册按钮大小是否合理功能●手机号  正向    格式正确,并且未注册  逆向   为空 ......
  • 第20天:信息打点-红蓝队自动化项目&资产侦察&企查产权&武器库部署&网络空间
    时间轴:演示案例自动化—武器库部署—F8x自动化—网络空间—AsamF自动化—企查信息—ENScan自动化—综合架构—ARL&Nemo各类红蓝队优秀工具项目集合:参考:https://github.com/guchangan1/All-Defense-Tool本项目集成了全网优秀的开源攻防武器项目,包含信息收集工具(自动......
  • 【机器学习】感知机
    1.感知机感知机是一个二分类的线性模型,它通过构造一个超平面,将特征空间中的样本分为两类。感知机的核心思想是找到一个超平面,使得不同类别的样本可以通过该超平面分开,适用于线性可分的数据集。优点:实现简单,易于理解和实现。在处理线性可分数据集时具有良好的表现。缺点......
  • 车载测试协议:ISO-14229、ISO-15765、ISO-11898、ISO-26262【车企实操项目学习】
      FOTA模块中OTA的知识点:1.测试过程中发现哪几类问题?   可能就是一个单键的ecu,比如升了一个门的ecu,他的升了之后就关不上,还有就是升级组合ecu的时候,c屏上不显示进度条。2.在做ota测试的过程中,会做网络通信的测试吗?   网络通信测试的话,有做,但是目前我的......
  • Java中接口的学习
    接口目录接口接口的概念接口的特性接口的好处接口和多态的关系接口的概念接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属......
  • 【万字文档+PPT+源码】基于springboot+vue餐厅管理系统-可用于毕设-课程设计-练手学习
    博主简介:......
  • 【万字文档+PPT+源码】基于springboot+vue电商平台系统-可用于毕设-课程设计-练手学习
    博主简介:......