Ваша проблема в том, что вы не используете connect
правильно. Во-первых, то, как вы использовали connect
с SIGNAL
и SLOT
, недопустимо. Во-вторых, вы не указали правильную подпись вашего сигнала и методы слотов. Вы должны предоставить параметры для каждого (при использовании SIGNAL
и SLOT
, есть другой способ, который я обрисовал в общих чертах ниже)
Здесь:
connect(mBulbWindow, SIGNAL(MBulbWindow::transferEntity()), this, SLOT(addEntity()));
Игнорирование того факта, что это не так допустимый способ использования SIGNAL
и SLOT
с connect
на мгновение, вы говорите, что MBulbWindow
имеет сигнал с именем transferEntity
без параметров, когда в действительности transferEntity
имеет параметр типа internalEntity &
.
Поэтому вам необходимо подключить его следующим образом:
connect(mBulbWindow, SIGNAL(transferEntity(internalEntity&)), this, SLOT(addEntity(internalEntity&)));
Qt теперь сможет также найти правильный сигнал для привязки.
Альтернативным и лучшим способом для IMO было бы использование более нового синтаксиса connect
. Например:
connect(mBulbWindow, &MBulbWindow::transferEntity, this, &MainWindow::addEntity)
Это экономит время при наборе текста, упрощает рефакторинг как сигнала, так и слота, а IMO выглядит чище. Преимущество также состоит в том, что проверки типов выполняются, чтобы гарантировать, что правильный тип передается в слот (неявное преобразование все еще может происходить).