首页 > 技术知识 > 正文

1.先说Qt信号槽的几种连接方式和执行方式。

1)Qt信号槽给出了五种连接方式:

Qt::AutoConnection 自动连接:默认的方式。信号发出的线程和糟的对象在一个线程的时候相当于:DirectConnection, 如果是在不同线程,则相当QueuedConnection Qt::DirectConnection 直接连接:相当于直接调用槽函数,但是当信号发出的线程和槽的对象不再一个线程的时候,则槽函数是在发出的信号中执行的。 Qt::QueuedConnection 队列连接:内部通过postEvent实现的。不是实时调用的,槽函数永远在槽函数对象所在的线程中执行。如果信号参数是引用类型,则会另外复制一份的。线程安全的。 Qt::BlockingQueuedConnection 阻塞连接:此连接方式只能用于信号发出的线程(一般是先好对象的线程) 和 槽函数的对象不再一个线程中才能用。通过信号量+postEvent实现的。不是实时调用的,槽函数永远在槽函数对象所在的线程中执行。但是发出信号后,当前线程会阻塞,等待槽函数执行完毕后才继续执行。 Qt::UniqueConnection 防止重复连接。如果当前信号和槽已经连接过了,就不再连接了。

2)信号槽的调用方式和线程:

qt 信号槽

学习来源于:

https://www.cnblogs.com/findumars/p/5176419.html

猜你喜欢