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

时间:2019-10-31 18:03:31

标签: c++ qt

我有两个名为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 ..\YilanOyun\mainclass.cpp:62"

1 个答案:

答案 0 :(得分:1)

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

相关问题