A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马程序员技术 初级黑马   /  2019-5-13 14:54  /  1853 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Qt尽管没有扩展C++语法,但是有额外编译链,每个Q_OBJECT类编译的时候会用moc工具生成另一个meta C++类,之后就是标准C++编译流程。QT test语法似乎比Google test简洁,就QCOMPARE和QVERIFY两个,但是有很多重载。另外expected和actual的顺序和gtest相反。Qt UI用的是消息循环,甚至还有deleteLater这样的功能Qt的容器用int表示数量,而不是size_t。Qt的事件传递用的不是函数指针,而是signal-slot,两者都是函数,这个机制完全依赖于moc,标准C++程序应该是无法实现的。Qt有比较健全的对象回收机制,如果父控件子控件都是堆上创建,那么父控件析构会自动调用子类析构,所以不需要写子控件的delete。有意思的是,即使在父类析构函数写了delete子控件,也完全没问题,因为子控件析构会和父控件解绑。由于这个解绑机制,栈上创建的对象,只要保证父控件先子控件后,也完全没问题。Qt的layout非常智能,比html不知高到哪里去了。Qt的跨平台支持不完美,mac和windows有的行为不太一样,某些地方需要用宏区别对待。Qt的控件提供了重载函数onEvent和on***Event两种,后者似乎是从前者衍生的,尽管功能一样,但后者用起来更舒服。Qt控件不提供一些C++操作符重载,比如赋值和拷贝构造,因为每个对象在树中都有特定位置,复制的语义不明确。Qt似乎提供不同的C++的编程规范,比如<QPlainTextEdit>也有<qplaintextedit.h>这样两个一样的版本,打印日志可以qInfo("hello"),也可以qInfo() << "hello"。Qt有完整的工具库,包括文件、JSON支持、字符串等等。

3 个回复

正序浏览
只要朝着一个方向努力,一切都会变得得心应手。加油
回复 使用道具 举报
加油,一起学习丫
回复 使用道具 举报
选择了,便走下去。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马