Qt Creater介绍

Qt Creater介绍

2018-05-11 23:41:17
上海

背景

最近操作系统项目要求做一个电梯调度程序,周围同学有的使用Java+Swing,有的使用Js,而我打算使用C++。第一次做有GUI的软件,上网搜索一番后发现了Qt这个工具,评价颇高。

下载安装

幸运的找到了Qt开源社区,上面有很多关于这个工具的资源。下载安装以及初步的学习推荐此教程。值得注意的是,直接在官网上下载安装包是需要注册的,而使用资源下载页面的链接可以绕过注册直接下载,链接如下:

https://download.qt.io/official_releases/qt/5.8/5.8.0/qt-opensource-windows-x86-android-5.8.0.exe

文件很大,推荐使用迅雷下载,速度很快。

或者,qt-opensource-windows-x86-android-5.8.0.exe的百度网盘(密码:vr6h):

https://pan.baidu.com/s/1pvm38_Mk9CnE3VQtBRqeLw

安装后界面如banner所示。共有六个模式,其中的设计模式可以方便的对UI进行可视化设计,简单了解即可上手。

通信机制

Qt有一套自己的通信机制,涉及到三个关键字:字:signalslotemit

  • signal(信号)

    被声明为signal的函数用来发射信号,信号可以被槽函数(被声明为slot的函数)接收并触发槽函数。

  • slot(槽)

    被声明为slot的函数可以接受信号函数的信号,值得注意的是,信号和槽之间的对应关系一对多或者多对一都可以,信号没有槽接收也是允许的。信号和槽之间的联系通过connect方法实现,如:

    connect(pointer1, SIGNAL(signalFun(int)), pointer2, SLOT(slotFun(int)));
    

    上述语句将pointer1所指向的类中的成员信号函数signalFunpointer2所指向的类中的成员槽函数slotFun相关联。槽函数除了可以与信号关联,与普通的函数没有什么区别。注意只有继承于Qt中的定义了信号的类或子类的类的成员函数才能与信号关联,也就是说非类的成员函数是显然不能与信号关联的。

  • emit(释放信号)

    用于释放一个信号。如:

    emit signalFun(a);//a is an int
    

    上述语句释放了一个signalFun信号,并且携带了参数a,与之关联的槽函数可以收到信号和参数并被触发。当然信号函数也可以不带任何参数。

这套机制有许多优点,它可以在不同的类甚至不同的线程之间进行使用,异常灵活。这对于多线程之间的通讯非常有用。并且它是类型安全的。

在 GitHub 上查看本页