【发布时间】:2012-06-11 06:20:00
【问题描述】:
我在一个块中使用一个信号和插槽连接。我的代码如下
在 a.cpp 中
{
QObject::connect(m_ptheFlange2Details,SIGNAL(GetFlang1DimAfterAnalysis()),
this,SLOT(GetFlang1DimAftrAnalysis()));
m_ptheFlange2Details->get();// one function inside which i am emiting
// GetFlang1DimAfterAnalysis() signal ;
QObject::disconnect(m_ptheFlange2Details,SIGNAL(GetFlang1DimAfterAnalysis()),
this,SLOT(GetFlang1DimAftrAnalysis()));
}
在 get() 函数内部,当这个 emit 语句执行时,slot 会被调用很多次。根据我的说法,它应该只调用一次。
【问题讨论】:
-
你确定
connect没有被多次调用吗??!!!请向我们展示更多代码。connect和disconnect写在哪个函数中?? -
emit在get()中调用了多少次? -
这段代码看起来不错。现在发布代码中丑陋的部分!
-
检查
QObject::disconnect(...)是否返回true。如果是,那么这部分代码是可以的。您可能在get()或其他地方遇到问题。 -
我在 get() 中只使用了一个 emit 语句,那么这个槽怎么能长时间调用呢?QObject::disconnect(--) 也返回 true 。我无法理解是什么问题......我应该去 QObject::uniqueconnection()