我有一个类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
中使用了其他类的插槽吗?有办法吗?
答案 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()))