随笔分类 - Qt-Meta
摘要:在java语言中,可以使用getObject(String)函数,从类名直接构建新的对象。 而在C++中是没有这种机制的,Qt虽然提供了元对象机制,但只可以获取对象的类名,不能反向构建。 这个问题我在百度上找了很多,但都没有满意的答案,索性翻出去google一下,终于找到了解决方法。 原文地址:ht
阅读全文
摘要:反射 -在计算机科学中,反射是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。[1]用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。 要注意术语“反射”和“内省”(type introspection)的关系。内省(或称“自省”)机制仅指程
阅读全文
摘要:https://gitee.com/feiyangqingyun/qtkaifajingyan
阅读全文
摘要:在奇趣(Trolltech),为了改进Qt的开发体验,我们做了大量的研究。这篇文章里,我打算分享一些我们的发现,以及一些我们在设计Qt4时用到的原则,并且展示如何把这些原则应用到你的代码里。 优秀API的六个特性 便利陷阱 布尔参数陷阱 静态多态 命名的艺术 指针还是引用? 案例分析:QProgre
阅读全文
摘要:(本篇文章为Qt官网英文文章,此为翻译整理所作) The Property System Qt提供了一套和其他通用编译器提供商所提供的属性系统类似的属性系统 ,然而,作为一个独立于编译器和平台的库,Qt不能依赖像__property或者[property]那样的非标准编译器特征。Qt的解决方案是在支
阅读全文
摘要:QMetaEnum 类提供了一个枚举的元数据。我们可以使用该类的静态模板函数,fromType<enumerator>来获得关于某个枚举的QMetaEnum对象,然后就可以调用该类的成员函数来获得该枚举的相关信息。该枚举必须使用Q_ENUM宏进行声明。 我们可以使用name()函数来获得枚举的名字;
阅读全文
摘要:在上一篇中,我们将的是QMetaEnum类,它可以获得一个类中由Q_ENUM宏或Q_FLAG宏声明的枚举类型的元信息。同样,QMetaMethod类是用来获取成员方法的元信息的一个类。通过该类,我们可以获取到一个成员方法的类型,比如它是信号、槽、方法、还是构造函数;也可以获得方法的完整签名,以及方法
阅读全文
摘要:只有继承了QObject类的类,才具有信号槽的能力。所以,为了使用信号槽,必须继承QObject。凡是QObject类(不管是直接子类还是间接子类),都应该在第一行代码写上Q_OBJECT。不管是不是使用信号槽,都应该添加这个宏。这个宏的展开将为我们的类提供信号槽机制、国际化机制以及 Qt 提供的不
阅读全文
摘要:QObject是有窗口类的父类,比如QWidget,QLabel,QPushButton等都直接或间接继承自QObject类。如果把某个窗口中的所有控件都装到一个QList<QObject*>中,那么如何区分当前的是那种类型控件呢? QObject *obj; if (obj->metaObject
阅读全文
摘要:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Amnes1a/article/details/69945878Qt中的很多C++类都使用了隐式数据共享来最大化资源使用和最小化拷贝代价。隐式共享类在作为参数传递时,不仅安全而且高效,因为只是指向数据的
阅读全文
摘要:这个类型相当于是Java里面的Object,它把绝大多数Qt提供的数据类型都封装起来,起到一个数据类型“擦除”的作用。比如我们的 table单元格可以是string,也可以是int,也可以是一个颜色值,那么这么多类型怎么返回呢?于是,Qt提供了这个QVariant类型,你可以把这很多类型都存放进去,
阅读全文
摘要:官方解释 我们在Qt源码中可以看到一个QObject的子类经常会用到一些Q_开头的宏,例如QMainWindow类开始部分代码是这样的: Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize) Q_PROPERTY(Qt::ToolBut
阅读全文
摘要:在使用Qt开发大型软件时,难免要调试程序,以确保程序内的运算结果符合我们的预期。在不符合预期结果时,就直接将程序断下,以便我们修改。 这就用到了Qt中的调试断言 - Q_ASSERT。 用一个小例子来说一下 Q_ASSERT 断言的作用吧: 用QtCreator新建一个控制台程序,代码编写如下: #
阅读全文
摘要:最近有点忙,先发一篇我公众号的文章,以下是原文。 /********原文********/ 最近很多学习Qt的小伙伴在我的微信公众号私信我,该如何理解下面段代码的第二行QWidget(parent) 1 Widget::Widget(QWidget *parent) : 2 QWidget(pare
阅读全文
摘要:可能每个程序员都面临着这样一种困境:由于客户总是无法用非常清晰的语言来描述需求,他们自身其实也并不完全清楚自己真正想要的是什么,而且即使你已经具备足够的业务知识和背景,为用户提供了全面的解决方案。但对于软件的需求,也会因各种原因而不断变更,所以作为程序员就需要为这些变更做好准备。 另一个促使程序员修
阅读全文
摘要:第一种方法 [cpp] view plain copy #include <QTime> [cpp] view plain copy [cpp] view plain copy [cpp] view plain copy QTime time; time= QTime::currentTime();
阅读全文
摘要:Lambda匿名函数 有时候槽函数代码辑逻辑非常简单,可以直接用下面的Lambda匿名函数处理信号,简捷明了.需c++11支持,不支持自身递归调用. 1 2 3 4 5 6 7 QComboBox *cb = new QComboBox(this); QObject::connect(cb,&QCo
阅读全文
摘要:Memory Ordering Background 很久很久很久以前,CPU忠厚老实,一条一条指令的执行我们给它的程序,规规矩矩的进行计算和内存的存取。 很久很久以前, CPU学会了Out-Of-Order,CPU有了Cache,但一切都工作的很好,就像很久很久很久以前一样,而且工作效率得到了很大
阅读全文
摘要:优点: QTestLib提供了单元测试框架的基本功能,并提供了针对GUI测试的扩展功能。 使用前提: 1,继承QObject 2,私有槽(每个槽函数都是一个测试函数,将被QTest::qExec()自动调用) 使用的相关宏: 1 2 3 4 1 2 3 4 5 6 7 8 初始化测试数据一般先有测试
阅读全文