怎样给不同的柱子上添加不同的标准误差线(怎么给柱形图加误差线)
1410
2022-05-30
本文主要讲QT信号槽的连接方式。QT使用connect函数进行连接信号槽。
目前QT5文档中提供了五个connect的重载函数。如下:
connect(const QObject *, const char *, const QObject *, const char *, Qt::ConnectionType ) connect(const QObject *, const QMetaMethod &, const QObject *, const QMetaMethod &, Qt::ConnectionType ) connect(const QObject *, const char *, const char *, Qt::ConnectionType ) const connect(const QObject *, PointerToMemberFunction , const QObject *, PointerToMemberFunction , Qt::ConnectionType ) connect(const QObject *, PointerToMemberFunction , Functor ) connect(const QObject *, PointerToMemberFunction , const QObject *, Functor , Qt::ConnectionType )
connect函数
接下来一一讲解。
第一种方式时比较传统的一种信号槽连接方式。函数名称与参数类型都比较直观明确。
第二种采用QMetaMethod方式,可以通过QMetaMethod进行类型比对等。
第三种与第一种的信号槽连接方式相似,只是省略了接收方,接收方这里指的是this对象。这种写法省略了this,使信号槽连接代码简洁。
第四种方式采用函数指针的方式进行绑定,省略了函数的参数类型,只指明了信号槽的函数名。这种写法通常适用于没有重载函数的信号槽函数。
第五种的信号依然是函数指针,这里也省略了接收方。最后一个参数是槽函数,可以是this对象的槽函数或者是lambda表达式等。
第六种与第五种的信号槽连接方式相似,这里明确指明了接收方。
connect连接类型
connect函数的最后一个参数是Qt::ConnectionType,该类型指明信号槽的连接方式。
Qt::ConnectionType定义如下:
Qt::AutoConnection Qt::DirectConnection Qt::QueuedConnection Qt::BlockingQueuedConnection Qt::UniqueConnection
Qt::AutoConnection
这是最常用的连接类型,也是connect函数的默认连接类型。
如果接收方与发送方在同一线程中,相当于使用Qt::DirectConnection;
如果接收方与发送方在不同线程中,相当于使用Qt::QueuedConnection。
连接类型是在信号发出时确定的。
Qt::DirectConnection
该类型适用于单线程场合。
当信号发出时,槽函数在信号所在的线程中立即被调用。相当于实时调用,类似直接函数调用。
Qt::QueuedConnection
该类型适用于多线程异步场合。
信号发送后,由接收方线程事件队列处理,发送方所在线程会继续向下执行。
槽函数在接收方的线程中执行,并不是实时调用的。
Qt::BlockingQueuedConnection
该类型适用于多线程同步场合。
信号发送后,由接收方线程事件队列处理,只是在槽函数返回之前信号所在的线程会阻塞。
槽函数在接收方的线程中执行。 如果接收方与发送方在同一线程,不能使用该连接类型。
Qt::UniqueConnection
该类型用于防止重复连接。
这是一个标志,可以与以上四种连接类型通过按位或的方式进行组合。使用该类型进行连接时,当相同的信号槽已经连接过了,就会连接失败。
Qt
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。