创建Qt项目

一、使用向导创建

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

创建Qt项目_第1张图片

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

创建Qt项目_第2张图片 选择【Choose】按钮,弹出如下对话框

创建Qt项目_第3张图片 设置项目名称和路径,按照向导进行下一步,

创建Qt项目_第4张图片

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

创建Qt项目_第6张图片

 选择编译套件,继续下一步

创建Qt项目_第7张图片 即可创建出一个Qt桌面程序。

创建Qt项目_第8张图片 将生成窗口。

创建Qt项目_第9张图片

二、手动创建

 添加一个空项目

创建Qt项目_第10张图片

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

创建Qt项目_第11张图片创建Qt项目_第12张图片创建Qt项目_第13张图片

创建Qt项目_第14张图片

 创建Qt项目_第15张图片

弹出新建文件对话框

创建Qt项目_第16张图片

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

三、文件解析

创建Qt项目_第17张图片

.pro 文件用于生成可执行文件,.h 存放头文件、类等,widget.cpp 中主要存放.h 文件中函数的实现过程,main.cpp 主要是主程序

1、.pro文件

QT       += core gui //模块的名字

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
//源文件
SOURCES += \
    main.cpp \
    mainwindow.cpp
//头文件
HEADERS += \
    mainwindow.h
//窗口设计文件
FORMS += \
    mainwindow.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

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

  1. 注释

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

  1. 模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:TEMPLATE = app
    1. app -建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
    2. lib - 建立一个库的makefile。
    3. vcapp - 建立一个应用程序的VisualStudio项目文件。
    4. vclib - 建立一个库的VisualStudio项目文件。
    5. subdirs -这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。
  2. #指定生成的应用程序名:

TARGET = QtDemo

  1. #工程中包含的头文件

HEADERS += include/painter.h

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

FORMS += forms/painter.ui

  1. #工程中包含的源文件

SOURCES += sources/main.cpp sources/painter.cpp

  1. #工程中包含的资源文件

RESOURCES += qrc/painter.qrc

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

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

  1. #配置信息

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

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

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

2、main.cpp

main 入口函数中

#include "mainwindow.h"

#include 

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

 解释:

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

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

3.QApplication 应用程序类

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

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

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

4.a.exec()

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


main.cpp 文件中有一句代码

Widget w;

       Widget 类实例化的对象 w,此时会调用构造函数,对如果对当前 Widget 类中的构造函数中写入设置的属性或者添 加一些控件,当实例化对象是就会调用构造函数,从而实现想要达到的目的,并且这样做也不会使得主函数中有 多余的代码

所以一般窗口的属性和添加控件以及对控件的操作都会在类的构造函数中书写 


Qt助手

通常在安装 Qt 时都会自带一个 Qt 助手,方便去查询 Qt 中的要使用的类和函数等 一般会在开始菜单的 Qt 目录中,一般叫做 Assista

创建Qt项目_第18张图片

点击进入后可以看到所呈现的内容

创建Qt项目_第19张图片

 一般点击索引后即可查找相应的内容


设置窗口属性

       由于现在设置的是窗口的属性,Widget 是自定义的类,所以要设置一些默认属性需要在其父类中寻找,所以在 Qt 手册中搜索 QWidget 即可找到一些要寻找的设置属性的函数

创建Qt项目_第20张图片

如果当前类中没有所需要的函数,可以从当前类的父类中再去寻找

设置窗口属性代码如下:

#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//一般对窗口的信息的设置都放在构造函数当中
//****************设置窗口属性*******************
//设置窗口标题
this->setWindowTitle("第一个窗口");
//设置窗口大小,设置完毕后窗口还可以拉伸
this->resize(400, 200);
//设置固定大小,设置完毕后窗口大小无法再改变
this->setFixedSize(800, 400);
}
Widget::~Widget()
{
}

 运行结果创建Qt项目_第21张图片

你可能感兴趣的:(QT学习,qt,开发语言)