创建Qt项目

1     创建Qt项目

2.1 使用向导创建

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

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

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

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

选择编译套件

向导会默认添加一个继承自CMainWindow的类,可以在此修改类的名字和基类。继续下一步

即可创建出一个Qt桌面程序。

2.2       手动创建

添加一个空项目

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

弹出新建文件对话框

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

2.3       .pro文件

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

#-------------------------------------------------
#
# Project created by QtCreator --08T15::
#
#------------------------------------------------- # 模块
QT += core gui # 高于4版本, 添加 QT += widgets, 为了兼容QT4
greaterThan(QT_MAJOR_VERSION, ): QT += widgets # 应用程序的名字
TARGET = 01_QtTest # 指定Makefile的类型, app
TEMPLATE = app # 源文件 .cpp文件
SOURCES += main.cpp\
mywidget.cpp # 头文件 .h文件
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/painter.cpp

#工程中包含的资源文件

        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应用程序

#include "mywidget.h"
#include <QApplication> // QApplication 应用程序类
// QT头文件没有.h
// 头文件名和类名一样
int main(int argc, char *argv[])
{
// 有且只有一个应用程序类的对象
QApplication a(argc, argv); // MyWidget继承于QWidget, QWidget是一个窗口基类
// 所以MyWidget也是一个窗口类
// w就是一个窗口对象
MyWidget w; // w窗口对象创建默认是隐藏, 需要执行show方法
w.show(); // 让程序一直执行, 等该用户执行操作
// 等待事件的发生, 然后处理事件
return a.exec();
}

解释:

Qt头文件没有.h后缀

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

QApplication应用程序类

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

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

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

a.exec()

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

QT5 基本模块

/* Start of mytest.cpp */

#include <QApplication>
#include <QWidget>
#include <QPushButton> int main(int argc, char * argv[])
{
QApplication app(argc, argv); QWidget w;
w.setWindowTitle(QString::fromUtf8("标题")); /*
* 如果不指定父对象,对象和对象(窗口和窗口)没有关系, 相互独立
* a指定b为它的父对象, a放在b的上面
* 指定父对象, 有两中方式:
* 1. setParent
* 2. 通过构造函数传参
* 指定父对象, 只需要父对象显示, 上面的子对象自动显示
*/ QPushButton b;
b.setText(QString("^_^"));
b.setParent(&w); // 使用setParent设置父对象
b.move(QPoint(, )); QPushButton b1(&w); // 使用构造函数传参,指定父对象
b1.setText(QString("abc"));
b1.move(QPoint(, )); w.resize(QSize(, ));
w.show();
return app.exec();
} /* End of mytest.cpp */

创建Qt项目的更多相关文章

  1. Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)

    Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)    转 https://blog.csdn.net/lhl1124281072/article/details/800 ...

  2. Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析

    转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编 ...

  3. Hello World程序演示Qt项目的建立、编译、运行和发布

    一.Qt项目的建立 1.选择项目模板. 选择"文件-->新建文件或工程",在选择模板页面选择Qt C++项目中的"Qt Gui应用"一项,然后单击&quo ...

  4. 使用VisualStudio2015开发QT项目

    一直习惯用VS,做QT项目时,不停的来回切IDE有些不方便.研究了一下QT的编译. 实际QT编译的机制和cmake是相同的,QT的IDE使用pro文件进行项目管理.QMake通过解析pro工程文件,生 ...

  5. maven学习(二)——手动创建maven项目

    一.Maven的简单使用 1.Maven项目的目录约定 MavenProjectRoot(项目根目录)   |----src   |     |----main   |     |         | ...

  6. 用CMake 构建Qt 项目

    译:用CMake构建Qt项目作者: Johan Thelin  译者:赖敬文原链接:http://developer.qt.nokia.com/quarterly/view/using_cmake_t ...

  7. Qt项目界面文件(.ui)及其作用(超详细)

    http://c.biancheng.net/view/1820.html Qt 项目中,后缀为“.ui”的文件是可视化设计的窗体的定义文件,如 widget.ui.双击项目文件目录树中的文件 wid ...

  8. [Qt插件]-03创建Qt Designer自定义部件

    如何创建自定义部件并添加到Qt Designer来爽快的拖动部件可视化界面设计?   Qt Designer基于插件的架构使得它可以使用用户设计或者第三方提供的自定义部件,就像使用标准的Qt部件一样. ...

  9. 配置CLion管理Qt项目国际化支持

    随着Qt 6的发布,cmake也正式宣告接管qmake的工作了. 在之前的一篇博客里我介绍了如何使用cmake管理你的qt项目,不过有一点我没有讲,那就是对国际化(i18n)的处理. 今天我们就来介绍 ...

随机推荐

  1. OpenStack入门篇(四)之KVM虚拟机介绍和管理

    1.查看虚拟机,启动虚拟机 [root@linux-node1 ~]# virsh list --all Id Name State --------------------------------- ...

  2. MySQL入门篇(二)之常见命令管理

    一.SQL结构化查询语言 SQL,英文全称Structured Query Language,中文意思是结构化查询语言.它是一种对关系数据库中的数据进行定义和操作的语言方法,是大多数关系数据库管理系统 ...

  3. javaweb(二十四)——jsp传统标签开发

    一.标签技术的API 1.1.标签技术的API类继承关系 二.标签API简单介绍 2.1.JspTag接口 JspTag接口是所有自定义标签的父接口,它是JSP2.0中新定义的一个标记接口,没有任何属 ...

  4. 解决windows 服务中定时器timer 定时偶尔失效 问题

    最近做个windows 服务,功能是:定时执行一个任务:自动登录到一个网站后,点击相关网面上的按钮button. 在处理的过程中发现定时器老是不定时的失效,失效时间没有规律. 由于刚开始处于测试阶段, ...

  5. MySQL☞左外链接与右外连接

    外链接查询:即要查询有关联关系的数据,还要查询没有关联关系的数据.(个人理解为:表A和表B两个关联的列中)如下图: emmm,简单的来说两个表的关联关系:book.bid=bookshop.id,他们 ...

  6. 使用Mininet创建网络拓扑

    使用Mininet创建Topo Python脚本实现创建拓扑 #coding:utf-8 from mininet.net import Mininet from mininet.topo impor ...

  7. 使用SKlearn(Sci-Kit Learn)进行SVR模型学习

    今天了解到sklearn这个库,简直太酷炫,一行代码完成机器学习. 贴一个自动生成数据,SVR进行数据拟合的代码,附带网格搜索(GridSearch, 帮助你选择合适的参数)以及模型保存.读取以及结果 ...

  8. tikv 安装

    export HostIP="127.0.0.1" docker run -d -p 2379:2379 -p 2380:2380 --name pd pingcap/pd \ - ...

  9. linux 命令自动补全包

    linux 其他知识目录 rhel7如果使用最小化安装后,tab键默认是不能自动补全命令的 执行yum install bash-completion之后重启系统正常.

  10. 【转】React-Native 实现增量热更新的思路

    所谓热更新就是在不重新安装的前提下进行代码和资源的更新,相信在整个宇宙中还不存在觉得热更新不重要的程序猿. 增量热更新就更牛逼了,只需要把修改过和新增的代码和资源推送给用户下载即可,增量部分的代码和资 ...