首页 > 其他分享 >2.创建Qt项目

2.创建Qt项目

时间:2024-04-13 21:00:27浏览次数:23  
标签:QT 项目 创建 MyMainWindow 应用程序 cpp main Qt

2.创建Qt项目

2.1使用向导创建

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

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

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

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

选择编译套件

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

版本控制团队开发会用到,有SVN、VSS、git。

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

2.2 手动创建

添加一个空项目

选择【choose】进行下一步。设置项目名称和路径 —> 选择编译套件 --> 修改类信息 --> 完成(步骤同上),生成一个空项目。在空项目中添加文件:在项目名称上单击鼠标右键弹出右键菜单,选择【添加新文件】

弹出新建文件对话框

在此对话框中选择要添加的类或者文件,根据向导完成文件的添加。

2.3 .pro文件

在使用Qt向导生成的应用程序.pro文件格式如下:

QT       += core gui  //包含的模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets //大于Qt4版本 才包含widget模块
TARGET = QtFirst  //应用程序名  生成的.exe程序名称
TEMPLATE = app    //模板类型    应用程序模板
SOURCES += main.cpp\   //源文件
        mywidget.cpp
HEADERS  += mywidget.h   //头文件

.pro就是工程文件(project),它是qmake自动生成的用于生产makefile的配置文件。.pro文件的写法如下:

  • 注释

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

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

    • app -建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
    • lib - 建立一个库的makefile。
    • vcapp - 建立一个应用程序的VisualStudio项目文件。
    • vclib - 建立一个库的VisualStudio项目文件。
    • subdirs -这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。
  • 指定生成的应用程序名:

TARGET = QtDemo

  • 工程中包含的头文件

HEADERS += include/painter.h

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

FORMS += forms/painter.ui

  • 工程中包含的源文件

SOURCES += sources/main.cpp sources

  • 工程中包含的资源文件

RESOURCES += qrc/painter.qrc

  • greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

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

  • 配置信息

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

CONFIG += c++11 //使用c++11的特性

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

2.4 一个最简单的Qt应用程序

main入口函数中

#include "widget.h"
#include <QApplication>

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

    return a.exec();
}

解释:

  • Qt系统提供的标准类名声明头文件没有.h后缀

  • Qt一个类对应一个头文件,类名就是头文件名

  • QApplication应用程序类

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

    • 是Qt的整个后台管理的命脉它包含主事件循环,在其中来自窗口系统和其它资源的所有事件处理和调度。它也处理应用程序的初始化和结束,并且提供对话管理

    • 对于任何一个使用Qt的图形用户界面应用程序,都正好存在一个QApplication 对象,而不论这个应用程序在同一时间内是不是有0、1、2或更多个窗口。

  • a.exec()

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

创建的工程层级关系如下

  • 01_QtFirst
    • 01_QtFirst.pro
    • 头文件
      • mymainwindow.h
    • 源文件
      • main.cpp
      • mymainwindow.cpp
    • 界面文件
      • mymainwindow.ui

mymainwindow.h

#ifndef MYMAINWINDOW_H
#define MYMAINWINDOW_H

#include <QMainWindow>

class MyMainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MyMainWindow(QWidget *parent = 0);
    ~MyMainWindow();
};

#endif // MYMAINWINDOW_H

main.cpp

#include "mymainwindow.h"
#include <QApplication>  //  QApplication应用程序类

//  程序入口  argc  命令行变量数量 argv[]命令行变量数组
int main(int argc, char *argv[])
{
    //  a应用程序对象  在Qt中  应用程序对象  有且仅有一个
    QApplication a(argc, argv);

    //  窗口类
    MyMainWindow w;
    //  窗口是不会默认弹出的,需要调用show方法进行显示
    w.show();

    //a.exec(); 进入消息循环机制  阻塞功能
    return a.exec();
    
    // while(1)
    // {
    //     if(点击叉子)
    //     {
    //         break;
    //     }
    // }
}

a.exec(); 进入消息循环机制 阻塞功能,一旦点击叉子就会退出循环

mymainwindow.cpp

#include "mymainwindow.h"

MyMainWindow::MyMainWindow(QWidget *parent)
    : QMainWindow(parent)
{
}

MyMainWindow::~MyMainWindow()
{

}

mymainwindow.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MyMainWindow</class>
 <widget class="QMainWindow" name="MyMainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MyMainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget"/>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>800</width>
     <height>21</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>

.pro文件介绍

QT       += core gui      //Qt包含的模块

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets    //大于4版本  加入 widgets   模块 

TARGET = 01_QtFirst   //生成.exe程序的名称
TEMPLATE = app        //模板 应用程序模板

SOURCES += main.cpp\   //源文件
        mywidget.cpp

HEADERS  += mywidget.h  //头文件

2.Qt项目创建
	2.1	项目名称 不能有空格和中文
	2.2	项目路径不能有中文路径
	2.3	创建窗口三大基类
		2.3.1	QWidget
		2.3.2	QMainWindow
		2.3.3	QDialog
	2.4	Main函数中
		2.4.1	QApplication a  应用程序对象  在Qt中 有且仅有一个
		2.4.2	MyWidget w 窗口对象
		2.4.3	w.show() 函数显示窗口
		2.4.4	return  a.exec()进入消息循环机制,阻塞功能
	2.5	.pro文件
		2.5.1	QT       += core gui      //Qt包含的模块
		2.5.2	greaterThan(QT_MAJOR_VERSION, 4): QT += widgets    //大于4版本  加入 widgets   模块 
		2.5.3	TARGET = 01_QtFirst   //生成.exe程序的名称
		2.5.4	TEMPLATE = app        //模板 应用程序模板
		2.5.5	SOURCES += main.cpp\   //源文件
		2.5.6	        mywidget.cpp
		2.5.7	HEADERS  += mywidget.h  //头文件

参考资料:黑马程序员

标签:QT,项目,创建,MyMainWindow,应用程序,cpp,main,Qt
From: https://www.cnblogs.com/codemagiciant/p/18133357

相关文章

  • ESP32 Arduino开发 MQTT
    ESP32Arduino开发MQTT目录ESP32Arduino开发MQTT1.安装程序库2.编写相关程序2.1.引入头文件2.2.定义MQTT相关参数2.3.创建对象2.4.连接网络2.5.连接MQTT服务器2.6.MQTT回调函数3.完整的代码例程4.MQTT连接测试1.安装程序库打开库管理工具工具->管理库.........
  • SEHH2042计算机编程集团项目
    SEHH204223-24第二学期-小组项目1SEHH2042计算机编程集团项目-礼品兑换系统(截止时间:2024年4月28日星期日23:59)预期学习成果在一个或多个高级语言编程环境中开发计算机程序;设计和开发结构化和文档化的计算机程序;解释面向对象编程的基本原理并将其应用于计算机程序发展结合计算机编......
  • 数码相框-测试&项目效果&部分代码讲解
    测试在makefile加上这句话意味着把警告当成错误处理:​​这里看视频跟着来就好了。input_manager.c详解#include<config.h>#include<input_manager.h>#include<string.h>staticPT_InputOprg_ptInputOprHead;staticT_InputEventg_tInputEvent;staticpthread_mu......
  • SpringBoot项目中对定义的多个Aspect类排序
    代码示例@ConfigurationpublicclassAspectConfig{@Aspect@Component@Order(Ordered.HIGHEST_PRECEDENCE)publicstaticclassLogAspect{@Pointcut("execution(public*com.imooc.spring.web..*.*(..))")publicvoidwe......
  • 项目中访问支付宝专线踩坑
    问题描述支付宝互联网地址为https://openapi.alipay.com/gateway.do,专线相比于互联网地址速度更快,更加稳定。这里我们假设专线地址为https://xxx.xxx.xxx.xxx:443/gateway.do。我们通过支付宝的SDK来访问支付宝专线地址,结果报了以下错误level:ERRORmessasge:AbsAlipayServ......
  • 通过 aqtinstall 安装 Qt5 的库
    QtMaintenanceTool(QtOnlineInstaller)可能没有Qt5的安装选项了,但是从Qt官网下载的qt-opensource-windows-x86-5.14.2.exe安装器在安装的时候会安装旧的QtCreator。如果你不想要旧的QtCreator并且需要的版本不是Qt5.14.2,安装起来可能不是很方便。有一个命令行工具可......
  • Adobe Acrobat Pro DC 2024 (macOS, Windows) - 创建、转换和编辑 PDF
    AdobeAcrobatProDC2024(macOS,Windows)-创建、转换和编辑PDFAdobeAcrobatPDFsoftware请访问原文链接:https://sysin.org/blog/adobe-acrobat/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgAcrobat:创建、转换和编辑PDF借助Acrobat实现各种文件创建P......
  • SpringBoot使用 nacos 会默认加载项目名配置文件
    问题描述boostrap.yml配置如下spring:application:name:cnblogscloud:nacos:config:server-addr:http://ip:8848namespace:d8b0df04-aa58-4a5b-b582-7d133b9e8b2c#命名空间IDfile-extension:yamlusern......
  • 敌人——创建敌人Rioter
    目标前期准备工作(略)编写Rioter蓝图编写RioterTask编写燃烧瓶逻辑编写火墙效果蓝图编写投掷燃烧瓶的动画通知事件核心思路敌人行为逻辑:实时检测玩家的位置并看向玩家随机左右横跳向玩家连续投掷燃烧瓶燃烧瓶碰到玩家爆炸,落到地面爆炸加持续燃烧一段时间1.编写Riote......
  • windows下的重装是最笨也是最简单的重复解决问题的方法,解决goldendict的qt库链接问题
    goldendict✔goldendict:symbollookuperror:goldendict:undefinedsymbol:_ZN10QAudioSink12stateChangedEN6QAudio5StateE,versionQt_6~yay-Sgoldendict......