1.先说Qt信号槽的几种连接方式和执行方式。
1)Qt信号槽给出了五种连接方式:
Qt::AutoConnection 自动连接:默认的方式。信号发出的线程和糟的对象在一个线程的时候相当于:DirectConnection, 如果是在不同线程,则相当QueuedConnection Qt::DirectConnection 直接连接:相当于直接调用槽函数,但是当信号发出的线程和槽的对象不再一个线程的时候,则槽函数是在发出的信号中执行的。 Qt::QueuedConnection 队列连接:内部通过postEvent实现的。不是实时调用的,槽函数永远在槽函数对象所在的线程中执行。如果信号参数是引用类型,则会另外复制一份的。线程安全的。 Qt::BlockingQueuedConnection 阻塞连接:此连接方式只能用于信号发出的线程(一般是先好对象的线程) 和 槽函数的对象不再一个线程中才能用。通过信号量+postEvent实现的。不是实时调用的,槽函数永远在槽函数对象所在的线程中执行。但是发出信号后,当前线程会阻塞,等待槽函数执行完毕后才继续执行。 Qt::UniqueConnection 防止重复连接。如果当前信号和槽已经连接过了,就不再连接了。2)信号槽的调用方式和线程:
学习来源于:
https://www.cnblogs.com/findumars/p/5176419.html免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:qt 信号槽 https://www.yhzz.com.cn/a/15924.html