一、组成QT的基本模块

二、创建一个简单工程

1、工程结构介绍

.pro 文件

  • QT       += core gui                                    # 包含的模块
    
    greaterThan(QT_MAJOR_VERSION, ): QT += widgets         # 大于Qt4版本 才包含widget模块
    
    TARGET = QMainWindow        # 应用程序名  生成的.exe程序名称
    TEMPLATE = app # //模板类型 应用程序模板 DEFINES += QT_DEPRECATED_WARNINGS #定义编译选项。QT_DEPRECATED_WARNINGS表示当Qt的某些功能被标记为过时的,那么编译器会发出警告。 CONFIG += c++ # 使用c++11的特性 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

    main.cpp

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

    Widget.cpp

  • Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
    {
    ui->setupUi(this);
    QPushButton *btn1 = new QPushButton("开始",this);  //创建一个按键
    btn1->move(,);
    btn1->resize(,);
    } Widget::~Widget() //析构代码
    {
    delete ui;
    }

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. IDEA中MyBatis插件的安装及使用

    这个插件的好处就在于能自动关联mapper类与xml,让你可以快速的互相跳转,还能帮助你做简单的排错. 安装方法: 1.File→Settings→Plugins,输入mybatis plugin,本 ...

  2. knuth洗牌算法

    首先来思考一个问题: 设计一个公平的洗牌算法 1. 看问题,洗牌,显然是一个随机算法了.随机算法还不简单?随机呗.把所有牌放到一个数组中,每次取两张牌交换位置,随机 k 次即可. 如果你的答案是这样, ...

  3. base64方式显示控件

    data:,文本数据 data:text/plain,文本数据 data:text/html,HTML代码 data:text/html;base64,base64编码的HTML代码 data:tex ...

  4. LODOP表格table简短问答及相关博文

    LODOP打印表格超文本输出表格:ADD_PRINT_HTML.ADD_PRINT_HTM.ADD_PRINT_TABLE.ADD_PRINT_TBURL打印表格带页头页尾 参考样例15 http:/ ...

  5. jQuery hashchange监听浏览器url变化

    $(window).bind('hashchange', function() { // });

  6. rabbitmq设置消息优先级、队列优先级配置

    1.首先在consume之前声明队列的时候,要加上x-max-priority属性,一般为0-255,大于255出错  -----配置队列优先级 配置成功后rabbitmq显示: 2.在向exchan ...

  7. kmeans 对表达量进行聚类

    代码如下 df = pd.read_csv("../kmeans/gene.fpkm.csv",header=None) print df.head() #去掉第一行 tdf = ...

  8. spring session cpu占用过高

      集成spring session很简单,只需几行代码即可. @Configuration @EnableRedisHttpSession public class SessionConfig { ...

  9. voltile解析

    https://www.cnblogs.com/dolphin0520/p/3920373.html

  10. 物流管理系统(SSM+vue+shiro)【前后台】

    一.简单介绍项目 该项目是属于毕业设计项目之一,有前台的用户下单.有司机进行接单.有管理员进行操作后台,直接进入主题 毕设.定制开发 联系QQ:761273133 登录主页: 手机号码+验证码登录 或 ...