一、组成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. 关于C语言中的结构体内嵌函数(转)

    https://blog.csdn.net/qq_39490500/article/details/80457831 看门见山 1.内嵌函数定义举例:经过真实测试 在函数中声明定义结构体 #inclu ...

  2. E: Unable to correct problems, you have held broken packages-之apt-get 下载报依赖问题

    今天在新来了一台ubutnu 18.04 在安装zabbix客户端是报依赖问题 root@VM_0_10:~# apt-get install zabbix-agent Reading package ...

  3. ThreadPool.QueueUserWorkItem 简单示例,显示当前时间

    1.线程池  添加方法 作为一个线程运行 class Program { static void Main(string[] args) { ThreadPool.QueueUserWorkItem( ...

  4. 「中山纪中集训省选组D4T1」折射伤害 高斯消元

    题目描述 在一个游戏中有n个英雄,初始时每个英雄受到数值为ai的伤害,每个英雄都有一个技能"折射",即减少自己受到的伤害,并将这部分伤害分摊给其他人.对于每个折射关系,我们用数对\ ...

  5. mysql系统信息函数

    1.VERSION() 返回数据库的版本号 SELECT VERSION() -- 5.0.67-community-nt2.CONNECTION_ID() 返回服务器的连接数SELECT CONNE ...

  6. Linux下的JMeter部署及使用

    之前都是在windows环境使用JMeter,是有操作界面的.但是最近需要在Linux环境下使用,现将操作步骤记录下来 在安装JMeter之前,需要在Linux下安装JDK并配置环境变量,这里跳过 1 ...

  7. Python之序列化概念

    我们把对象(变量)从内存中变成可存储或运输的过程称之为序列化,在 Python 中叫 pickling ,在其他的语言中也被称之为 serialization,marshalling,flatteni ...

  8. REST Framework接口规范

    REST Framework接口规范 一 .发展及其背景介绍 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备-).因此,必须有一种统一的 ...

  9. centos7 设置静态ip , 并开机联网

    修改 /etc/sysconfig/network-scripts 下的文件 我的是ens32 (不同系统这个文件名字不一样) 内容如下 TYPE=Ethernet PROXY_METHOD=none ...

  10. Excel默认去除开头的0

    用户反映打开的.xls文档打开时,excel会默认把某些以0开头零件号去零,导致数据丢失. 解决办法: 先用记事本打开,然后把EXCEL的单元格格式设为文本格式,再把数据复制过去就可以了. 或者先打开 ...