Qt学习

来源:互联网 发布:大学生旅游 知乎 编辑:程序博客网 时间:2024/06/01 19:08

2017-12-4
计科老师布置了一个大作业…要求做一个简单的图形数据管理系统…虽然他的意思并不是去学Qt之类的东西…但是本着锻炼一下自己的想法..还是学了吧

记录一下自己学习的过程…希望后来者能借鉴一下,少走一点弯路吧

首先是下载Qt….这里就折腾了好久…

先去官网上注册一个账号吧

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

然后下载这个版本[复制下载地址之后直接打开迅雷就可以了]

然后我看的是这个教程。

今天先这么多吧。

2017-12-6
学习了一下信号槽
本来c++就只懂了些皮毛…所以看得有些吃力

这里就直接引用了…本来想找作者问一下…后来发现作者已经三年没有登录论坛了…蛮伤感的..人们总会离去一些东西啊…希望他最后一次关上论坛页面的时候不是沮丧的吧。

希望不会冒犯,侵删

正好在听LALA的新歌,《言不由衷》

愿你永远安康 愿你永远懂得飞翔

信号槽是 Qt 框架引以为豪的机制之一。熟练使用和理解信号槽,能够设计出解耦的非常漂亮的程序,有利于增强我们的技术设计能力。所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,用自己的一个函数(称为槽(slot))来处理这个信号。也就是说,当信号发出时,被连接的槽函数会自动被回调。这就类似观察者模式:当发生了感兴趣的事件,某一个操作就会被自动触发。(这里提一句,Qt 的信号槽使用了额外的处理来实现,并不是 GoF 经典的观察者模式的实现方式。)为了体验一下信号槽的使用,我们以一段简单的代码说明:
// !!! Qt 5#include <QApplication>#include <QPushButton>int main(int argc, char *argv[]){    QApplication app(argc, argv);    QPushButton button("Quit");    QObject::connect(&button, &QPushButton::clicked, &QApplication::quit);    button.show();    return app.exec();}

这里写一下我对这个程序的理解吧。

首先先包含Qt两个头文件【引入的是 QApplication 以及 QLabel 这两个类】
主函数第一句的意思在第三篇中的注解里提到了

main() 函数中第一句是创建一个 QApplication 类的实例。对于 Qt 程序来说,main() 函数一般以创建 application 对象(GUI 程序是 QApplication,非 GUI 程序是 QCoreApplication。QApplication 实际上是 QCoreApplication 的子类。)开始,后面才是实际业务的代码。

然后我们定义了一个button(准确的说应该是PushButton字面意思理解就是可以按的按钮..?不知道啊…我英语也不好。那么还有其他种类的button么?可以吸的button? ??噗)

下面就是这个程序的关键了”connect()


2017-12-06 下午更新

早上计科课下课了,就先停下了。

那么接着说 connect() QAQ

Qt的精髓是什么?
在知乎上搜了一下,有一篇文章是
如何才能学到Qt的精髓?

里面有一句话这样说:

首先,我想谈的是 signal/slot,Qt算是发明了signal/slot,这个思想也被其他一些框架语言借鉴了。

好像并没有说些什么…而且这个大佬并没有更新其次后面是什么…

在教程里,这两节的名字提到了信号槽
刚开始我非常不解…这个中文名字起的好生硬啊….
后来发现还是英语太差…slot本身就有槽的意思
而且随着对信号槽的了解加深,发现这本身就像字面描述一样
有一个信号signal,有一个槽slot,然后我们把他们connect在了一起,来进行信息的交流

这或许也是为什么直译的原因吧。

仔细的看一下connect那一行

 QObject::connect(&button, &QPushButton::clicked, &QApplication::quit);

第一个参数是button 也就是我们刚刚定义的那个按钮
第二个参数很字面噗 就是点击,是QPushButton里的一个函数吧…?(这里只是我的猜测…毕竟没有看过这个的源代码)
第三个就是退出了

那么我们发挥一下想象力,可以猜到一种可能button在收到点击的signal的时候会让application quit 掉

那么说,在这里button是一个对象,click是button的一个signal

然后application是一个槽

connect吧button和application结合在了一起

当signal的时候进行信号交流

使得application quit。

【以上仅代表个人观点,如果错误欢迎以及非常感谢指出错误】

下一行就是吧quit显示出来,要不然我们也没东西点

那么这个程序就注解完了…比程序都长…

原创粉丝点击