2.创建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

mywidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>

class MyWidget : public QWidget
{
    Q_OBJECT

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

#endif // MYWIDGET_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(); 进入消息循环机制 阻塞功能,一旦点击叉子就会退出循环

mywidget.cpp

#include "mywidget.h"

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
}

MyWidget::~MyWidget()
{

}

.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  //头文件

参考资料:黑马程序员

posted @ 2024-04-13 20:56  CodeMagicianT  阅读(61)  评论(0编辑  收藏  举报