У меня проблемы с подключением сигнала в моем пользовательском классе к слоту в моем главном окне

Итак, я работал над своим графическим интерфейсом, и он стал довольно большим, поэтому я решил разделить его на несколько виджетов, которые взаимодействуют с главным окном (вероятно, то, что я должен был сделать с самого начала). Я разделил часть моего графического интерфейса на отдельный виджет, но у меня возникли проблемы с настройкой сигналов и слотов между главным окном и новым виджетом, и я надеялся, что вы поможете мне понять, что я делаю неправильно.

Главное окно называется robotmainwindow, а виджет называется robotTabWidget. В robotmainwindow.h я пересылаю объявленный robotTabWidget как таковой:

robotTabWidget* robotttabwidget;

Затем в robotmainwindow.cpp я инициализировал класс:

robottabwidget = new robotTabWidget();

У меня есть функция под названием создать соединения в robotmainwindow, в которой я пытаюсь подключить сигнал от robotTabWidget к слоту в robotmainwindow:

void robotmainwindow::createConnections()
{
connect(robottabwidget, &robotTabWidget::sigSendCartCommand, this, &robotmainwindow::slotOnSendCartCommand);
}

Сигнал sigSendCartCommand определен в robottabwidget.h:

void sigSendCartCommand(double);

И выдается в robotTabWidget :: on_SendCartCommand_clicked ():

emit sigSendCartCommand(CartCommand);

Но когда я пытаюсь скомпилировать, я получаю «нет соответствующей функции для вызова» для функции подключения, и «robotTabWidget :: sigSendCartCommand (double) защищен». Почему сигнал защищен? Я думал, что вы можете испустить сигнал откуда угодно. И почему я получаю сообщение об ошибке «Нет соответствующей функции»?

Это доставляло мне много хлопот за последние несколько дней, и я не смог этого понять. Буду очень признателен за вашу помощь!

редактировать: я изменил вещи вокруг, и исправил несколько вещей, но я все еще получаю ошибки. Функция подключения теперь выглядит так:

QObject::connect(myrobotTabWidget, robotTabWidget::sigTest(test), this, &robotmainwindow::slotOnSendCartCommand);

Теперь я получаю сообщение об ошибке: «не могу вызвать функцию-член без объекта»:

../RobotInterface2/robotmainwindow.cpp:102:68: error: cannot call member function 'void robotTabWidget::sigTest(QString)' without object
QObject::connect(myrobotTabWidget, robotTabWidget::sigTest(test), this, &robotmainwindow::slotOnSendCartCommand);

И стрелка указывает на robotTabWidget :: sigTest (QString). Я не уверен, что с этим делать. Есть идеи?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …