- 博客(21)
- 收藏
- 关注
原创 Qt信号槽细节原理
3.在同一个线程中,当一个信号被emit发出时,会立即执行其槽函数,等槽函数执行完毕后,才会执行emit后面的代码,如果一个信号链接了多个槽,那么会等所有的槽函数执行完毕后才执行后面的代码,槽函数的执行顺序是按照它们链接时的顺序执行的。4.在链接信号和槽时,可以设置链接方式为:在发出信号后,不需要等待槽函数执行完,而是直接执行后面的代码,是通过connect的第5个参数。以上,便是信号槽的整个流程,总的来说就是一个“注册-索引”机制,并不存在发送系统信号之类的事情。第5个参数一般不填,为默认值。
2024-02-25 18:03:13
756
原创 Qt独特特性
元对象编译器会对Q_Object相关类里面的东西进行编译,生成C++文件,也就是那些moc_的文件。成员变量是一个“内”概念,反映的是类的结构构成。属性是一个“外”概念,反映的是类的逻辑意义。成员变量没有读写权限控制,而属性可以指定为只读或只写,或可读可写。成员变量不对读出作任何后处理,不对写入作任何预处理,而属性则可以。,为继承自QObject的对象赋予独特属性值。再让C++编译器编译。
2024-02-25 15:25:14
255
原创 观察者模式
有时也被称为“模型-视图”模式、“源-监听者”模式等。在这种模式中,由一个目标对象来管理所有依赖与它的观察者对象,并且当这个目标对象自身发生改变时,会主动向它的观察者们发出通知。前面已经说了,观察者模式也可以理解为 “源-监听者” 模式,这种应用就太多了。举个简单的例子就是各种 listener,比如当你有一个按键,你肯定要给这个按键添加监听事件(listener)来完成指定动作吧,这就是一种应用。于是你天天等啊等啊,等它的更新通知一来,你就去看那些最新的视频。
2023-09-04 23:37:43
49
原创 装饰者模式
送你一个女朋友怎么样!想她是美国金发大妞?你想她是哪个国家的就是哪个国家的。她们有不同的爱好或者习惯,每一个这样的女孩,都可以看作是一个 Java 类。我知道此刻你一定在想,这一个、那一个…这种方式没有扩展性,每当有一个新类型的女孩,就得又新建一个类,这简直就是类爆炸啊!装饰者模式(Decorator Pattern,有的也用 Wrapper Pattern)就是动态地把职责附加到已有对象上去,实现功能扩展。
2023-09-04 23:31:54
35
原创 适配器模式
适配器模式(Adapter Pattern)当然是用来适配的啦。当你想使用一个已有的类,但是这个类的接口跟你的又不一样,不能拿来直接用,这个时候你就需要一个适配器来帮你了。你去香港旅游,买的 iPhone6 的充电器插头是英标的,它是那种三脚是方形的插头。而咱们国标的插头是两只脚,和英标不一样。好的,目标明确,英标三只脚插头充电,国标两只脚插头充电。适配器对象组合一个实现新接口的对象(这个对象也可以不实现一个接口,只是一个单纯的对象)对适配器原有接口方法的调用被委托给新接口的实例的特定方法。
2023-09-04 23:21:43
33
转载 C++之sort()函数详解
顾名思义,sort就是用来排序的函数,它根据具体情形使用不同的排序方法,效率较高。可以看到,sort的参数有三个,其中前两个是必填的,而比较函数则可以根据需要填写,如果不写比较函数,则默认对前面给出的区间进行递增排序。这样就可以让数值大的元素在前面,即降序排列,对于double,char亦如此,把cmp内传入参数的类型改变一下就好了。运行之后可以得到下面的结果,可以试着理解一下(特别注意理解“尾元素地址的下一个地址”)。sort(首元素地址(必填),尾元素地址的下一个地址(必填),比较函数(非必填));
2023-08-16 00:04:09
3065
2
转载 C++中的substr()函数详解
我们可以运行三个嵌套循环,最外面的循环选择起始字符,中循环将选择的字符右边的所有字符视为子字符串的结束字符。最里面的循环从当前选择的起点打印字符到选择的终点。len:子字符串的长度。s.substr(i,len)从字符串s中的索引i开始打印长度为len的子字符串。作为参数,并返回一个新构造的字符串对象,其值初始化为该对象的子字符串的副本。在此字符串和字符被给定,并且您必须打印子字符串,后跟给定的字符。我们需要编写一个程序,以打印该给定字符串的所有非空子字符串。大于字符串的大小,则返回的子字符串为。
2023-08-16 00:01:07
36224
2
原创 Qt对json生成与解析的封装
现在JsonHelper类具备了生成和解析JSON的功能。你可以使用generateJson方法来将QVariantMap转换为JSON字符串,使用parseJson方法将JSON字符串解析为QVariantMap。
2023-06-17 11:13:48
257
原创 QGraphicsView示例代码改版
接下来,我们将小圆相对于大圆的中心位置设置为(0, 0),即小圆相对于大圆的左上角位置。然后,我们将小圆添加到大圆的Group中,通过addToGroup函数将小圆添加到大圆的Group中,这样小圆将随着大圆的移动而一起移动。这样,view将占据窗口的左上角区域。然后,我们将大圆的位置设置为scene的中心,使用setPos(-100, -100)将大圆的左上角定位到scene的中心。通过这些修改,你将看到view在窗口的左上角,scene在view的中心,大圆在scene的中心,小圆在大圆的中心。
2023-06-15 23:27:08
51
原创 C++快速排序
2.分别对 61 左边的数 [ 43,11,34,56,21 ] 和右边的数 [ 90,68 ] 分别进行快速排序,这里体现了分治的思想。首先我们来看左边 [ 43,11,34,56,21 ] 的排序。快速排序比较有趣,选择数组的一个数作为基准数,一趟排序,将数组分割成为两部分,一部分均小于/等于基准数,另外一部分大于/等于基准数。4.左边 [ 21,11,34 ] 排序后,以 21 为分割线,左右各自只有一个数,自然已经停止,上面 43 的右边也只有一个元素,所以也已经是有序的。
2023-06-05 23:26:51
34
原创 C++插入排序
选择排序是每次选择出最小的放到已经排好的数组后面,而插入排序是依次选择一个元素,插入到前面已经排好序的数组中间,确保它处于正确的位置,当然,这是需要已经排好的顺序数组不断移动。第一次假设第一个元素已经排好,第二个元素 90 往前面查找插入位置,正好查找到 98 的位置插入,第二轮是 34 选择插入位置,选择了第一个元素 90 的位置插入,其后面的元素后移。第三轮排序则是 56 选择适合自己的位置插入,第四轮是最后一个元素 21 往前查找适合的位置插入。
2023-05-31 23:06:42
30
原创 C++冒泡排序
冒泡排序(Bubble Sort)是基于交换的排序,每次遍历需要排序的元素,依次比较相邻的两个元素的大小,如果前一个元素大于后一个元素则两者交换,保证最后一个数字一定是最大的(假设按照从小到大排序),即最后一个元素已经排好序,下一轮只需要保证前面 n-1 个元素的顺序即可。
2023-05-31 22:32:30
33
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人