• QT_1


    QT - 1

    About QT:

    Qt的发展史

    1991年 Qt最早由奇趣科技开发
    1996年 进入商业领域,它也是目前流行的Linux桌面环境KDE的基础
    2008年 奇趣科技被诺基亚公司收购,Qt称为诺基亚旗下的编程语言
    2012年 Qt又被Digia公司收购
    2014年4月 跨平台的集成开发环境Qt Creator3.1.0发布,同年5月20日配发了Qt5.3正式版,至此Qt实现了对iOS、Android、WP等各平台的全面支持。
    当前Qt最新版本为 5.9.9

    支持的平台

    Windows – XP、Vista、Win7、Win8、Win2008、Win10
    Uinux/X11 – Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX、FreeBSD、BSD/OS、和其他很多X11平台
    Macintosh – Mac OS X
    Embedded – 有帧缓冲支持的嵌入式Linux平台,Windows CE

    Qt版本

    Qt按照不同的版本发行,分为商业版和开源版
    商业版
    为商业软件提供开发,他们提供传统商业软件发行版,并且提供在商业有效期内的免费升级和技术支持服务。
    开源的LGPL版本:
    为了开发自有而设计的开放源码软件,它提供了和商业版本同样的功能,在GNU通用公共许可下,它是免费的。

    优点

    跨平台,几乎支持所有的平台
    接口简单,容易上手,学习QT框架对学习其他框架有参考意义。
    一定程度上简化了内存回收机制
    开发效率高,能够快速的构建应用程序。
    有很好的社区氛围,市场份额在缓慢上升。
    可以进行嵌入式开发。

    成功案例:

    Linux桌面环境 (kde, deepin.... )
    wps
    谷歌地球
    屏幕共享
    VLC
    virtualBox
    ...

    QT命名规范&快捷键

    1.类名首字母大写,单词与单词之间首字母大写
    2.函数,变量 首字母小写, 单词与单词之间 首字母大写

    ctrl + B --------> 编译
    ctrl + R -------->运行
    ctrl + F --------> 查找
    --------> 帮助文档
    --------> 全屏帮助文档
    --------> 退出帮助文档
    ctrl + 鼠标滚轮 --------> 字体缩放
    ctrl + i 自动对齐
    ctrl + / --------> 多行注释
    ctrl + shift + up / down --------> 整行移动
    --------> 同名.h 与.cpp 之间切换
    --------> 函数名声明部分于实现部分的跳转

    帮助文档的简单介绍

    Header: #include //需要包含的头文件
    qmake: QT += widgets //需要包含的模块
    Inherits: QAbstractButton //父类
    Inherited By: QCommandLinkButton //被继承

    实例1:

    main.cpp文件

    
    #include "widget.h"
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        //应用程序对象, a, Qt中有且仅有一个应用程序对象
        QApplication a(argc, argv);
        //创建Widget对象w, Widget基类 Qwidget
        Widget w;
        //默认窗口是不会弹出的,如果想弹出,调用show方法
        w.show();
        //a.exec()进入消息循环机制
        return a.exec();
    }
    

    .pro文件:

    QT       += core gui  //qt包含的模块 core与gui
    //大于4版本的qt 包含widget模块
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 
    
    TARGET = first //生成的目标文件 'first'
    TEMPLATE = app //模板 应用程序
    
    //
    DEFINES += QT_DEPRECATED_WARNINGS
    
    
    CONFIG += c++11
    
    //源文件
    SOURCES += 
            main.cpp 
            widget.cpp
    //头文件
    HEADERS += 
            widget.h
    FORMS += 
            widget.ui
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
    
    

    .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的特性比如lambda表达式
    在这里使用“+=”,是因为我们添加我们的配置选项到任何一个已经存在中。这样做比使用“=”那样替换已经指定的所有选项更安全。

    widget.h 文件:

    #ifndef WIDGET_H //防止头文件重复编译
    #define WIDGET_H
    
    #include <QWidget>
    
    namespace Ui {
    class Widget;
    }
    
    class Widget : public QWidget
    {
        Q_OBJECT  //Q_OBJECT宏,写了这个宏,就支持了QT中的信号和槽机制
    
    public:
        explicit Widget(QWidget *parent = nullptr); //构造函数,parent 初始化为nullptr
        ~Widget(); //析构函数
    
    private:
        Ui::Widget *ui; // 定义ui
    };
    
    #endif // WIDGET_H
    
    

    widget.cpp:

    #include "widget.h"
    #include "ui_widget.h"
    #include <Q>
    
    Widget::Widget(QWidget *parent) : //构造函数
        QWidget(parent), //初始化列表
        ui(new Ui::Widget) //
    {
        ui->setupUi(this); //启动ui界面
    }
    
    Widget::~Widget()
    {
        delete ui;
    }
    
    
  • 相关阅读:
    PHP数组简介
    如何在不使用系统函数的情况下实现PHP中数组系统函数的功能
    弹性盒布局display:flex详解
    关于JS面向对象中原型和原型链以及他们之间的关系及this的详解
    如何使用AngularJS对表单提交内容进行验证
    如何用canvas画布画旋转的五角星
    MYSQL常用函数以及如何操作数据
    数据库基础以及表的创建
    PHP中的OOP
    PHP中数组的遍历
  • 原文地址:https://www.cnblogs.com/lyxf/p/12262960.html
一二三 - 开发者的网上家园