Итак, в основном я пытаюсь сделать следующее: я хочу создать на экране панель со стрелками.Когда пользователь нажимает клавишу «вверх» или «8», пользовательский интерфейс должен реагировать так, как будто я нажал кнопку «вверх».Я гуглил и искал повсюду, но поскольку я только начал использовать QTCreator (и C ++), я очень неопытен, и любая помощь будет признательна.
Пока у меня есть
class GamePadWidget : public QWidget
{
public:
GamePadWidget(QWidget *parent = 0);
protected:
virtual void keyPressEvent(QKeyEvent *event);
};
GamePadWidget::GamePadWidget(QWidget *parent)
: QWidget(parent)
{
int buttonWidth = 75;
int buttonHeight = 75;
QPushButton *down = new QPushButton(("Y-"), this);;
down->setGeometry(100, 200, 100, 100);
QIcon downicon;
downicon.addFile(QString::fromUtf8("C:/arrows/Aiga_downarrow.png"), QSize(),QIcon::Normal, QIcon::Off);
down->setIcon(downicon);
down->setIconSize(QSize(buttonWidth,buttonHeight));
down->setFocusPolicy(Qt::NoFocus);
QPushButton *up = new QPushButton(("Y+"), this);;
up->setGeometry(100, 50, 100, 100);
QIcon upicon;
upicon.addFile(QString::fromUtf8("C:/arrows/Aiga_uparrow.png"), QSize(),QIcon::Normal, QIcon::Off);
up->setIcon(upicon);
up->setIconSize(QSize(buttonWidth,buttonHeight));
up->setFocusPolicy(Qt::NoFocus);
}
void GamePadWidget::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_8 || event->key() == Qt::Key_Up ) {
printf("key event in board");
}
else if (event->key() == Qt::Key_9 || event->key() == Qt::Key_Down ) {
qApp->quit();
}
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
GamePadWidget widget;
widget.show();
return app.exec();
}
с моим текущим кодом, если я нажимаю клавишу «вниз» или «2», приложение закрывается, как и ожидалось, но здесь есть часть, в которой я застрял.
Мне нужна та же функциональность, что и при нажатии клавиши «вниз» (или «вверх»).), кнопка должна кратковременно загореться, а затем подать сигнал тому, кто знает, где
Я понимаю, что это должно иметь какое-то отношение к connect (quit, SIGNAL (clicked ()), qApp, SLOT (quit ()));
но я не могу обернуться и найти его.
Спасибо за потраченное время.