QT с использованием открытого слота другого класса - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть класс 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 голосов
/ 10 декабря 2018

Вы можете использовать лямбда-выражения, как уже упоминалось.

Но это должно делать то, что вы хотите без лямбды:

connect(commandBox, SIGNAL(returnPressed()), commandBox, SLOT(SubmitCommand()))
0 голосов
/ 10 декабря 2018

Вы можете использовать новый синтаксис соединения с выражениями labmda.

В Qt есть хорошая статья.https://wiki.qt.io/New_Signal_Slot_Syntax

И конечный код будет выглядеть так:

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