• 1_Qt简介.md


    QT简介

    QT是c++的一个应用程序框架。包含大量GUI库,其他库等。

    跨平台GUI实现方法:

    • API 映射:API 映射是说,界面库使用同一套 API,将其映射到不同的底层平台上面。大体相当于将不同平台的 API 提取公共部分。
    • API 模拟:前面提到,API 映射会“缺失”不同平台的特定功能,而 API 模拟则是解决。这一问题。不同平台的有差异 API,将使用工具库自己的代码用于模拟出来。
    • GUI 模拟:任何平台都提供了图形绘制函数,例如画点、画线、画面等。有些工具库利用这些基本函数,在不同绘制出自己的组件,这就是 GUI 模拟。GUI 模拟的工作量无疑是很大的,因为需要使用最基本的绘图函数将所有组件画出来;并且这种绘制很难保证和原生组件一模一样。

    QT环境搭建

    1. Qt SDK:包含了 Qt 库以及 Qt 的开发工具(IDE、i18n 等工具),是一套完整的开发环境。
    2. Qt Library:仅包含 Qt 库。
    3. Qt Creator:基于 Qt 构建的一个轻量级 IDE。

    hello world

    #include "mainwindow.h"
    
    #include <QApplication>
    #include <QLabel>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QLabel label("hello world");
        label.show();
        return a.exec();
    }
    
    引入的是QApplication以及QLabel这两个类。对于 Qt 程序来说,main()函数
    

    一般以创建 application 对象(GUI 程序是 QApplication,非 GUI 程序是
    QCoreApplication。QApplication 实际上是 QCoreApplication 的子类。)开始,后面才是实际业务的代码。main()函数最后,调用 app.exec(),开启事件循环。

    注意:以下代码不推荐

    #include "mainwindow.h"
    
    #include <QApplication>
    #include <QLabel>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
       // QLabel label("hello world");
        QLabel *label = new QLabel("Hello World!");
    
        label->show();
    //    MainWindow w;
    //    w.show();
        return a.exec();
    }
    

    首先,按照标准 C++ 来看这段程序。这里存在着内存泄露。当 exec()退出时(也就是事件循环结束的时候。窗口关闭,事件循环就会结束),label 是没办法 delete 的。这就造成了内存泄露。当然,由于程序结束,操作系统会负责回收内存,所以这个问题不会很严重。即便你这样修改了代码再运行,也不会有任何错误

  • 相关阅读:
    C语言I作业12—学期总结
    C语言寒假大作战01
    C语言I作业12—学期总结
    C语言I博客作业11
    C语言I作业9
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业05
    C语言I博客作业04
    C语言I博客作业03
  • 原文地址:https://www.cnblogs.com/nsfoxer/p/14353838.html
Copyright © 2020-2023  润新知