一、组成QT的基本模块

二、创建一个简单工程

1、工程结构介绍

.pro 文件

    1. QT += core gui # 包含的模块
    2.  
    3. greaterThan(QT_MAJOR_VERSION, ): QT += widgets # 大于Qt4版本 才包含widget模块
    4.  
    5. TARGET = QMainWindow # 应用程序名 生成的.exe程序名称
    6. TEMPLATE = app # //模板类型 应用程序模板
    7.  
    8. DEFINES += QT_DEPRECATED_WARNINGS #定义编译选项。QT_DEPRECATED_WARNINGS表示当Qt的某些功能被标记为过时的,那么编译器会发出警告。
    9.  
    10. CONFIG += c++ # 使用c++11的特性
    11.  
    12. SOURCES += \ #源文件
    13. main.cpp \
    14. mainwindow.cpp
    15.  
    16. HEADERS += \ # 头文件
    17. mainwindow.h
    18.  
    19. FORMS += \
    20. mainwindow.ui #设计师界面。
    21.  
    22. # Default rules for deployment.
    23. qnx: target.path = /tmp/$${TARGET}/bin
    24. else: unix:!android: target.path = /opt/$${TARGET}/bin
    25. !isEmpty(target.path): INSTALLS += target

    main.cpp

    1. int main(int argc, char *argv[])
    2. {
    3. QApplication a(argc, argv); // 应用程序对象 有且仅有一个
    4. Widget w; //定义MainWindow窗口对象
    5. w.show(); //显示窗口
    6.  
    7. //程序进入消息循环,等待对用户输入进行响应。这里main()把控制权转交给Qt
    8. //Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。
    9. return a.exec(); //进行消息循环 阻塞
    10. }

    Widget.cpp

    1. Widget::Widget(QWidget *parent) :
    2. QWidget(parent),
    3. ui(new Ui::Widget)
    4. {
    5. ui->setupUi(this);
    6. QPushButton *btn1 = new QPushButton("开始",this);  //创建一个按键
    7. btn1->move(,);
    8. btn1->resize(,);
    9. }
    10.  
    11. Widget::~Widget() //析构代码
    12. {
    13. delete ui;
    14. }

2、对象树

Qt中的对象树如下图所示:

QObject是以对象树的形式组织起来的:在创建QObject对象时,可以提供一个其父对象,我们创建的这个QObject对象会自动添加到其父对象的children()列表。当父对象析构的时候,这个列表中的所有对象也会被析构。(注意,这里的父对象并不是继承意义上的父类!)

QWidget继承自QObject,因此也继承了这种对象树关系。一个孩子自动地成为父组件的一个子组件,我们也可以自己删除子对象,它们会自动从其父对象列表中删除。

Qt 引入对象树的概念,在一定程度上解决了内存问题。

任何对象树中的 QObject对象 delete 的时候,如果这个对象有 parent,则自动将其从 parent 的children()列表中删除;如果有孩子,则自动 delete 每一个孩子。Qt 保证没有QObject会被 delete 两次,这是由析构顺序决定的。

局部对象的析构顺序应该按照其创建顺序的相反过程;

QT--初识的更多相关文章

  1. QT+UI界面初识+界面与编辑区结合操作

    图片中时UI界面的初识,了解界面部件都是干啥的: 有了界面之后,使得QT的开发变的更加的便捷,但是在ui界面有时满足不了的功能,就需要使用代码解决,怎么利用代码呢? 首先:打开程序编辑区: #incl ...

  2. QT征程之初识qt

    下载 https://www.qt.io/cn/download-open-source/     下载QT离线安装包 Qt 5.5.1 for Linux 32-bit (546 MB) (info ...

  3. 初识---Qt解析XML文件(QDomDocument)

    关于XML及其使用场景不在此多做介绍,今天主要介绍Qt中对于XML的解析.QtXml模块提供了一个读写XML文件的流,解析方法包含DOM和SAX,两者的区别是什么呢?  DOM(Document Ob ...

  4. 初识Qt Creator

    (1).Qt Creator是一个跨平台的.完整的Qt集成开发环境,其中包括了高级C++代码编辑器.项目和生成管理工具,下载地址http://download.qt.io/archive/qt/: ( ...

  5. Qt入门(1)——初识Qt

    Qt是一个跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器.Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta ...

  6. 初识QT

    前言:这是写给纯小白看的文章,大神可以自行绕道. QT的优势(摘自360百科): Qt支持下列操作系统: Microsoft Windows 95/98, Microsoft Windows NT, ...

  7. 1初识QT

    创建程序步骤: 打开Qt Creator 界面选择 New Project或者选择菜单栏 [文件]-[新建文件或项目]菜单项 弹出New Project对话框,选择Qt Widgets Applica ...

  8. 初识Qt简单动画

    Qt提供了类QPropertyAnimation来实现图片的一些简单的动画操作效果. 1.新建一个Qt空项目,同时添加资源文件,并在资源文件中添加图片路径.之后在main.cpp函数中添加以下代码 # ...

  9. 初识Qt文件下载

    1.新建一个Qt Gui应用,项目名称为http,基类选择为QMainWindow,类名设置为MainWindow. 2.在http.pro文件中的QT  += core gui后添加\ networ ...

  10. 初识Qt基于http协议网页浏览

    1.新建一个Qt Gui应用,项目名称为http,基类选择为QMainWindow,类名设置为MainWindow. 2.在http.pro文件中的QT  += core gui后添加\ networ ...

随机推荐

  1. Anaconda无法更新

    在安装完Anaconda,更新包时 C:\Users\Administrator>conda upgrade --all WARNING: The conda.compat module is ...

  2. 获取apk的Activity和Package

    2.查看包名和activity adb logcat|grep -i activitymanager 获取当前界面的activity 1.adb shell dumpsys window window ...

  3. windows下大数据开发环境搭建(1)——Java环境搭建

    一.Java 8下载 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载之后 ...

  4. R统计数据框的行数

    如下三种方法可以实现 使用dim函数 dim(dataframe)[0] 使用nrow函数 nrow(dataframe) 使用length函数统计 length(dataframe[,1])

  5. Java字符串无意识的递归

    Java中的每个类基本上都继承自Object,标准容器类自然也不例外.因此容器类都有toString()方法,并且重写了该方法,使得它生成的String结果能够表达容器本身,以及容器所包含的对象.例如 ...

  6. Jenkins运行python脚本出现 configparser.NoSectionError: No section: 'XXXXXX'

    原来的代码如下: def get_test_config(tag, key, config="config.ini"): cf = configparser.ConfigParse ...

  7. Django django.core.exceptions.ImproperlyConfigured: WSGI application 'myblog.wsgi.application' could not be loaded; Error importing module.报错

    报错内容 django.core.exceptions.ImproperlyConfigured: WSGI application 'myblog.wsgi.application' could n ...

  8. golan切片

  9. jmeter_分布式测试

    背景:         由于Jmeter本身的瓶颈,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误.要解决这个问题,可以使用分布式实测 ...

  10. Unity项目 - MissionDemolition 愤怒的小鸟核心机制

    目录 游戏原型 项目演示 绘图资源 代码实现 注意事项 技术探讨 参考来源 游戏原型 爆破任务 MissionDemolition 是一款核心机制类似于愤怒的小鸟的游戏,玩家将用弹弓发射炮弹,摧毁城堡 ...