如果我有一个A类,它的一个函数可以:
void A::func()
{
emit first_signal();
emit second_signal();
}
假设B类有两个插槽,一个连接到first_signal
,另一个连接到second_signal
,是否可以保证连接到first_signal
的插槽总是在处理second_signal
插槽之前进行处理?
发布于 2009-11-14 18:46:16
如果您在信号和插槽之间使用直接连接类型(Qt::DirectConnection),那么答案是肯定的。
从Qt帮助系统:
当信号发出时,连接到它的插槽通常会立即执行,就像正常的函数调用一样。当发生这种情况时,信号和插槽机制完全独立于任何图形用户界面事件循环。emit语句后面的代码将在所有插槽返回后执行。使用排队连接时,情况略有不同;在这种情况下,emit关键字后面的代码将立即继续,插槽将在稍后执行。
您可以在QObject::connect方法中将默认连接类型更改为任何enum Qt::ConnectionType。
https://stackoverflow.com/questions/1733022
复制相似问题