Qt day01

一、Qt简介

    1、什么是Qt

    是设计图形用户应用程序框架,是对底层应用编程接口进行了面向对象的封装

    是一套基于C++语言的库、专注但不限于图行用户界面的开发,也可以进行系统调用、网络编程、数据库、2D/3D图形处理

    2、为什么选择Qt

    基于C++语言、使用简单、易用、有优秀的跨平台特性、支持Linux、Windows、MacOS、iOS、Android

二、Qt环境与工具

    Qt助手: Qt参考文档,里面简介了Qt中所有的类和函数,相当于Qt的man手册,是每个Qt开发人员必备工具

    Qt构造器: 负责对源文件、头文件、界面文件(.ui)进行解析生成Makefile编译脚本

        qmake -project 根据当前目录中文件,生成项目的配置文件 xxx.pro 结尾

        qmake 根据 xxx.pro项目文件的内容,自动生成Makefile

    Qt设计师: 对于界面应用设计开发来说,最存粹的方式是通过C/C++代码来编写整个项目,包括界面设计

        但是这种方式费时、费力,所以一般不会这样做界面,而是采用画图、鼠标拖拽等方式设计界面

        并且会自动生成界面文件,所见即所得,完成后会得到一个xxx.ui文件

   

    Qt界面编译器: 负责把Qt中的界面文件(.ui)翻译成C++代码(.h)

        uic xxx.ui -o xxx.h

    Qt创造器=Qt助手+Qt构造器+Qt设计师+Qt界面编译器+文本编辑器 是一个集成开发环境

三、Qt的第一个程序

    1、新建项目

        打开Qt Creator ->文件->新建文件或项目->Appliction->Qt Widgets Application->输入项目名称

        ->选择项目路径->选择编译器(默认即可)->输入默认的类名、界面文件名->完成

    2、编写代码

        QApplication a(argc, argv); //  创建Qt应用程序对象

        QLabel* lab = new QLabel;   //  创建一个标签对象

        lab->setText("Hello Qt");   //  设置标签文本内容

        lab->show();                //  显示标签

        return a.exec();            //  开始运行Qt程序

    3、编译运行

        1、点击右下角绿色按钮

        2、Ctrl+R

四、Qt创造器常用的快捷键

    Alt+0   显示或隐藏侧边栏

    Ctrl+i  格式化代码

    Ctrl+/  注释或取消注释

    Ctrl+F  查找、替换

    Ctrl+shift+r        批量修改变量名,enter键确认

    Ctrl+左单击 / F2    跳转到变量、函数等内容的定义位置

    shift+F2            声明与定义之间切换

    F1      光标定在类对象上,打开该类的帮助手册

    F4      切换头文件和源文件

    shift+Alt+U 小写切换成大写

    Alt+U       大写切换成小写

    Ctrl+A  Ctrl+C  Ctrl+V  Ctrl+S  Ctrl+Z

五、Qt帮助手册

    Header: 需要包含的头文件

    qmake: 需要依赖的模块 需要在xxx.pro 文件中添加

    Inherits: 父类

    Properties: 成员变量

        类自己本身的成员变量和继承父类的成员变量

    Public Functions: 公开属性的成员函数

    Reimplemented Public Functions: 公开属性的虚函数

    Public Slots: 具有公开属性的槽函数

    Signals: 该类可以发出信号

    Reimplemented Protected Functions: 具有保护属性的虚函数

    Additional Inherited Members: 继承过来的成员汇总

    Detailed Description对该类的详细说明和举例

六、窗口容器控件

    从Hello例子中看出,每个控件都可以是一个单独的窗口,但是要想实现一个完善的界面,所有控件都应该集合在一个窗口中

    因此需要一个窗口容器盛放这些控件

    1、QMainWindows 主窗口容器

        通常包含了标题栏、菜单栏、工具栏、状态栏、主窗体区组成

    2、QDialog  对话窗口容器

        自带一些交互的控件

    3、QWidget  纯粹的窗口容器

        它是QMainWindow QDialog类的父类

   

    常用设置:

        move(x,y)   设置窗口的位置(以屏幕左上角为原点)

        resize(w,h) 设置窗口的宽 高

    如何把控件放入窗口容器中:

        1、创建窗口容器对象

            QWidget* widget = new QWidget;

        2、创建控件时,把窗口的对象指针传参给控件对象

            QLabel* lab3 = new QLabel(widget);

        3、只需要窗口容器显示,则里面的所有控件默认都显示

            widget->show();

七、Qt中的字符串和终端输出数据

    QString 具备String类的所有功能

        通过to系列函数可以转换为各种数据类型的数据

        例如: QString str = "3.14"; str.toDouble();

    终端输出:

        C/C++的printf/scanf/cin/cout 都可以继续使用

八、信号和槽

    1、什么是信号

        当用户或系统触发某个动作时,可能导致窗口、控件发生变化时,该窗口或控件会发射一个信号

        信号可以预先连接上一个函数,当信号触发时就会自动调用该函数

    2、槽

        也叫槽函数,与普通函数一样,可以被手动调用

    3、信号与槽函数进行连接

        connect(const QObject * sender, const char * signal, const QObject * receiver, const char * method)

        sender: 信号的发送者,必须是QObject类的子类

        signal: 信号签名

            SINGAL(信号函数) 把信号转换成信号签名

        receiver: 信号的接收者,必须是QObject类的子类

        method: 槽函数签名

            SLOT(槽函数) 把槽函数转换成槽函数签名

    4、自定义信号和槽

        a、向项目中新建一个类,一定要继承QObject

            1、右击项目名->添加新文件->C++ class->类目和继承QObject->完成

            2、在该类signals: 定义一个信号函数:

            3、在public slots: 后面声明该类的槽函数,在源文件中实现(写完声明后,

                Alt+enter 快速地在对应的.cpp中生成函数定义)

            4、通过connect进行信号和槽函数的绑定

                类自己向自己发生信号

                类向别的控件类发送信号

                别的控件类向类自己发生信号

            5、发送信号: 调用信号函数

                通过emit命令发送信号

                调用信号函数

            注意: 一定要继承QObject,并且要在类声明中写Q_OBJECT

九、Qt创造器中是如何使用widget.ui/mainwindows.ui等文件

    1、widget.ui文件会被uic编译成ui_widget.ui文件,在项目目录看不到,在编译结果目录才有(不想让用户看到、修改)

    2、在ui_widget.h中会自动生成一个类 Ui_Widget, 该类会自动定义widget.ui中设计的所有控件对象

    3、在Ui_Widget类中有一个成员函数setupUi, 该函数的参数是窗口容器的指针,该函数会实例化所有的控件对象

        并设置相应的属性、大小、位置等内容

    4、ui_widget.h中定义了Ui名字空间,该名字空间中定义了一个空的类Widget,该类继承了Ui_Widget类

    5、Qt创造器会自动生成widget.h和widget.cpp文件

    6、在widget.h声明了Ui名字空间和Widget类,并且自动生成了WIdget类型,该类型继承了QWidget,并且在类中定义了

        Ui_Widget *ui成员

    7、在widget.cpp中自动生成构造函数和析构函数

        在构造函数中实例化了ui对象,并且在函数中调用了ui->setupUi(this) 相当于对自己窗口进行所有控件的设置

    8、在main.cpp中实例化Widget类,在构造函数中九已经对该Widget窗口对象进行设置了

        最后通过 窗口对象.show() 显示窗口中的所有控件

你可能感兴趣的:(qt,开发语言)