QShortcut не работает

Кажется, я не могу заставить работать мое сочетание клавиш. Вот код:

class Interface : public QObject
{
Q_OBJECT

private:

QMainWindow myWindow;
QWidget mainWidget;
QShortcut shortcut;

public:

Interface();
~Interface();
void show(void);

public slots:

void haha(void);
};

Interface::Interface() :
QObject(),
shortcut(QKeySequence(Qt::Key_Enter), &mainWidget)
{
myWindow.setFixedSize(1200, 600);
myWindow.setCentralWidget(&mainWidget);
QObject::connect(&shortcut, SIGNAL(activated()), this, SLOT(haha()));
}

void Interface::show(void)
{
myWindow.show();
}

void Interface::haha(void)
{
std::cout << "foo" << std::endl;
}

Моя основная функция:

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

Interface myInterface;
myInterface.Show();
return app.exec();
}

Он компилируется без каких-либо предупреждений / ошибок, но когда я его выполняю, при нажатии Enter не выводится «foo». Я уже искал Интернет, но не нашел что-то достаточно близкое. Извините, если я что-то упустил.

3

Решение

Qt::Key_Enter относится к клавише, расположенной на клавиатуре. Вы должны использовать Qt::Key_Return если вы хотите, чтобы слот вызывался при нажатии основной клавиши Enter на клавиатуре:

Interface::Interface() :
QObject(),
shortcut(QKeySequence(Qt::Key_Return), &mainWidget)
{
myWindow.setFixedSize(1200, 600);
myWindow.setCentralWidget(&mainWidget);
QObject::connect(&shortcut, SIGNAL(activated()), this, SLOT(haha()));
}
4

Другие решения


По вопросам рекламы [email protected]