使用另一类的公共插槽进行QT

时间:2018-12-10 08:53:13

标签: qt signals-slots

我有一个类ArrayToolBar,它有一个公共成员commandBox和一个公共函数createArray()

class ArrayToolBar : public QToolBar
{
    Q_OBJECT

public:
    explicit ArrayToolBar(const QString &title, QWidget *parent);
    CommandBox* commandBox = new CommandBox(); 
    void createArray();

这是createArray()的定义方式

void ArrayToolBar::createArray(){
    commandBox->setFocus();
    connect(commandBox, SIGNAL(returnPressed()), this, SLOT(commandBox->SubmitCommand()));
}
  

SubmitCommand()是CommandBox类中的公共插槽。

我的问题是我遇到错误:不存在这样的插槽。 这是因为我在ArrayToolBar中使用了其他类的插槽吗?有办法吗?

2 个答案:

答案 0 :(得分:1)

您可以对labmda表达式使用新的连接语法。

Qt对此有很好的论述。 https://wiki.qt.io/New_Signal_Slot_Syntax

最终代码如下:

connect(commandBox, &CommandBox::returnPressed,
        this, [=] () {commandBox->SubmitCommand();});

答案 1 :(得分:0)

您可以使用已经提到的lambda表达式。

但是这应该在没有lambda的情况下完成您想要的操作:

connect(commandBox, SIGNAL(returnPressed()), commandBox, SLOT(SubmitCommand()))