我将自定义类中的信号连接到主窗口中的插槽时遇到问题

时间:2016-02-01 17:04:55

标签: c++ qt signals-slots custom-widgets

所以,我一直在研究我的GUI并且它已经变得非常大了,所以我决定把它拆分成多个与主窗口通信的小部件(可能是我应该做的事情。开始)。我将部分GUI分区为一个单独的小部件,但是我在主窗口和新小部件之间设置信号和插槽时遇到了麻烦,我希望你能帮我弄清楚我和# 39;我做错了。

主窗口名为robotmainwindow,小部件名为robotTabWidget。在robotmainwindow.h中,我将声明的robotTabWidget转发为:

robotTabWidget* robotttabwidget;

然后,在robotmainwindow.cpp中,我初始化了类:

robottabwidget = new robotTabWidget();

我在robotmainwindow中有一个名为create connections的函数,我尝试将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);

但是当我尝试编译时,我得到一个"没有匹配函数来调用"对于connect函数," robotTabWidget :: sigSendCartCommand(double)受到保护"。为什么信号受到保护?我以为你可以从任何地方发出信号。为什么我得到一个"没有匹配的功能"错误?

过去几天这给我带来了很多麻烦,而我却无法弄明白。我非常感谢你的帮助!

编辑:我改变了一些事情并修复了一些问题,但我仍然遇到错误。 connect函数现在看起来像:

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 个答案:

没有答案