为什么 connect() 函数看不到插槽?

Why doesn't connect() function see Slot?

本文关键字:看不到 插槽 函数 connect 为什么      更新时间:2023-10-16

我有两个类,分别命名为Snake和MainClass。我需要使用线程。为了使用线程,我必须使用Signal/Slot connect((函数。但是这个函数没有连接到SLOT。我不明白为什么。你可以在下面找到我的一小段代码(相关部分(

MainClass.h
public:
Snake *snake;
MainClass.cpp
QThread *thread1 = new QThread();
snake = new Snake();
snake->moveToThread(thread1);
connect(thread1, SIGNAL(started()), snake, SLOT(keyPressEvent(event)));
thread1->start();
Snake.h
class Snake : public QObject, public QGraphicsRectItem
{
Q_OBJECT
public:
Snake();
public slots:
void keyPressEvent(QKeyEvent *event);
Snake.cpp
void Snake::keyPressEvent(QKeyEvent *event)
{
if(event->key()==Qt::Key_Left)
{
qDebug()<<"player1";
}
}
main.cpp
MainClass *mainclass = new MainClass();
mainclass->show();
mainclass->game();

在添加connect((之前,游戏会正常工作。但当我添加connect((时,我看到一个错误:

QObject::connect: No such slot Snake::keyPressEvent() in ..YilanOyunmainclass.cpp:62"

QThread启动信号没有任何参数,但您将其连接到KeyPressEvent,该事件接受KeyEvent参数,这就是为什么它说找不到不接受参数的插槽。插槽和信号签名应匹配。