我需要在接收信号后调用对象的插槽(只需将信号转发到其他对象的插槽)。我知道可以简单地实现插槽并从主体中调用另一个插槽,但也许我可以用更简单的方法来做?
以下是示例代码:
以下是示例代码:
class SomeWidget : public QObject
{
Q_OBJECT
signals:
textChanged(QString);
//...
};
//----------------------------------------------------------------------
class SomeController : public QObject
{
Q_OBJECT
public slots:
processText(QString);
//...
public:
SomeController()
{
connect(this, &SomeController::processText, &someUtil, &SomeUtil::processText);
//^^ this won't work, linker can not find SomeController::processText
}
private:
SomeUtil someUtil; //doesn't matter, just does something
};
//----------------------------------------------------------------------
//code somewhere else
connect (someWidget, &SomeWidget::textChanged, someController, &SomeController::processText)
编辑:
好的,也许我的问题不够清楚 - 就我所举的例子而言 - 我不想直接将SomeWidget
与SomeUtil
连接起来,因为我想隐藏我使用SomeUtil
的事实。这个类应该对SomeController
的用户是不可见的。这是封装的一个问题。 SomeController
是一种外观。
更重要的是我不需要实现SomeController
的槽。它的工作只是调用SomeUtil
的槽(转发信号)。