QT——day1

                                                        Qt_01

1.从创建QT项目说起

(1)

创建 App

创建 Qt Widgets App ,Widgets就是模块。

(2)

选择路径,路径不能包含中文。

(3)

选择编译工具链。

(4)

指定类信息,Qt提供三种基类,我们将创建基类的派生类。这里使用基类QWidget。


(5)

三个符号,分别是,编译并且运行,编译调试,编译不运行。

2.使用QWidget基类的默认信息

(1)main.cpp

(2)widget.h

(3).pro (一个脚本文件,和makefile有关,主要控制makefile时连接的模块)

Qt的模块

以下使用c++

Widgets:GUI

Webkit: 浏览器引擎

Test:   测试单元

SQL:    数据库

Mulitmedia Widgets: 多媒体

Mulitmedia: 多媒体

Network: 网络

Core:   自带模块

GUI:    自带模块

以下使用js语言

Quick

QML

(3)一般使用的框架

(4)简单的使用

这样,我学会了各个窗口显示按键控件,但按按键还不能触发事件,接下来就要使用connect。

注:

(1)将这些初始化代码写到main中不好,因为main会变得很臃肿,所以正确的写法是,写到构造函数中。

(2)在构造函数使用别的类的对象,要使用组合实现,不要使用继承。

   这样当我按下a1对象时,窗口就会关闭。

3.使用connect

    详细看下connect:

当前还没有学习connect的实现原理,但是根据使用可以猜测:

Connect使用了两种方法:

(1)    函数指针做参数,实现函数回调,实现了connect逻辑和具体方法的解耦和。

(2)    进程的信号机制,实现了进程的通信。

大胆猜想下connect的业务逻辑:

当鼠标点击对象a2后,和鼠标相关的那个进程发出了一些列信号,其中包含released信号,widgets进程收到信号,由于a2与released信号绑定,所以widgets进程会处理released信号,处理的方法就是第三个参数如this,*this通过函数回调执行Mysolt。

其他细节:

由于使用的是自带的信号,所以初次使用可能不知道有哪些信号可用,所以需要使用F1,

具体如下:

    因为信号是QPushButton类的成员,所以F1查看QPushButton

      看 Contents 发现没有Signals,所以 Signals 是继承来的,

      追踪父类。

     

     发现了 Signals

     追踪

    

自此,我大致学会了单个窗口的简单操作。

下面,我将学习两个窗口的操作。

4.使用信号

我希望实现的是:

两个窗口,主窗口点击切换窗口按键,主窗口消失,次窗口出现。

          次窗口点击切换窗口按键,次窗口小时,主窗口出现。

再添加一个窗口,就是再加一个类,创建新文件时同样继承QWidget即可。

要让两个对象关联起来,我选择用组合,主窗口类组合次窗口类。

但是组合只能实现单工的联系,

这时就要用自定义信号了。

次窗口.h

次窗口.cpp

次窗口对象的button对象按下后,发出信号。

然后让主窗口接受这种信号,所以主窗口的构造函数需要添加这句话。

5.目前使用到的快捷键

F1:查手册

F4:切换.h和.cpp

Ctrl + R :编译并运行。


猜你喜欢

转载自blog.csdn.net/blank2019/article/details/80291464