Я думаю, что знаю, что вы хотите сделать. Если вы хотите управлять своей змейкой в отдельном потоке, то это можно сделать следующим образом:
Создайте keyPressEvent (событие QKeyEvent *), а не слот. Не в Snake, а в MainClass Наивно это события сигналы. Сигналы в Qt ничего не делают, только испускают сигнал. Я лично не рассматриваю их как реальные функции. Вам нужна отдельная функция, которая будет обрабатывать событие из сигнала.
Создайте другую функцию, которая будет слотом и будет обрабатывать ваше событие - например, move (QKeyEvent * event).
void Snake::move(QKeyEvent *event)
{
if(event->key()==Qt::Key_Left)
{
qDebug()<<"player1";
}
}
Соедините keyPressEvent с snakeMove
connect(MainClass, &MainClass::keyPressEvent, Snake, &Snake::move);
Не беспокойтесь о событии *, которое будет автоматически передано между двумя функциями.