我有两个名为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"
答案 0 :(得分:1)
QThread启动信号没有任何参数,但是您将其连接到具有KeyEvent参数的KeyPressEvent,这就是为什么它说找不到找不到参数的插槽的原因。插槽和信号签名应该匹配。