QObject::connect: signal not found in QThread
时间: 2023-07-15 16:15:06 浏览: 114
这个错误通常是因为在`QThread`的子类中没有声明与信号连接的函数的原因。您需要在`QThread`的子类中声明该信号和槽函数,并在连接信号和槽时使用正确的函数名称。
例如,如果您在`QThread`的子类中有一个名为`mySignal`的信号,您需要声明一个名为`onMySignal`的槽函数,如下所示:
```
class MyThread : public QThread
{
Q_OBJECT
signals:
void mySignal();
private slots:
void onMySignal();
};
```
然后,您可以将信号与槽函数连接起来:
```
MyThread* thread = new MyThread();
connect(thread, SIGNAL(mySignal()), thread, SLOT(onMySignal()));
```
请注意,这里的函数名称应该是`onMySignal`,而不是`MyThread::onMySignal`,因为在这种情况下,槽函数是在`QThread`的上下文中执行的,而不是在`MyThread`的上下文中执行的。
相关问题
QObject::connect: signal not found in RouteEvent
这个错误提示是因为在connect函数中,你连接了一个不存在的信号。可能是因为你在RouteEvent类中没有定义close信号,导致连接失败。在Qt中,QWidget类中有一个close信号,它表示窗口被关闭的信号。所以,如果你希望在RouteEvent窗口关闭的时候执行一些操作,可以考虑连接QWidget的close信号,像下面这样:
```
connect(route_event, &QWidget::closeEvent, this, [=]() {
enableAllItems(m_tree_map->m_map_project);
});
```
这样,当RouteEvent窗口关闭的时候,会触发QWidget的closeEvent事件,从而执行lambda函数中的代码,恢复MyTreeWidget中所有Item的可用状态。需要注意的是,这种方式只适用于继承自QWidget的类,如果你的类继承自其他类,可能需要连接其他信号来实现相应的功能。
QObject::connect: No such signal school::sendMessage() in ..\untitled\mainwindow.cpp:11 QObject::connect: No such signal school::sendMessage() in ..\untitled\mainwindow.cpp:11
这个错误提示是因为在 `mainwindow.cpp` 的第11行尝试连接一个不存在的信号 `school::sendMessage()`。请确保 `school` 类中定义了名为 `sendMessage()` 的信号,并在 `mainwindow.cpp` 中使用正确的信号名称进行连接。
在 `school` 类中,您需要添加类似于以下代码的信号声明:
```cpp
signals:
void sendMessage();
```
然后,在 `mainwindow.cpp` 中,确保使用正确的信号名称进行连接,例如:
```cpp
QObject::connect(&schoolObject, SIGNAL(sendMessage()), this, SLOT(handleMessage()));
```
请注意,函数名大小写敏感,确保信号和槽函数的名称拼写一致。如果问题仍然存在,请检查您的代码逻辑并确保信号和槽函数的正确性。