Как преобразовать `extern int getchar (void);` из stdio.h в Qt :: Key? - PullRequest
0 голосов
/ 06 декабря 2018

В основном я стремлюсь достичь

void getCharSlot(int ch)
{
    switch (ch) {
    case Qt::Key_Escape:{dostuff();}
    case Qt::Key_Tab:   {dostuff();}
    }
}

Есть ли относительно удобный способ сделать это?

1 Ответ

0 голосов
/ 07 декабря 2018

На этот вопрос практически отвечает сам.Первоначально я разместил его, не понимая, что

extern int getchar (void);

из stdio.h имеет тип int, преобразованный в char из кода, который я скопировал.

После удаления этого преобразования и отправки целого числа прямо в мою функцию, приведенную ниже, это сработало правильно:

void Foo::bar(int ch)
{
    const QMetaEnum &keyEnum = QMetaEnum::fromType<Qt::Key>();
    QTextStream(stdout) << keyEnum.valueToKey(ch) << endl;
}

Это означает, что ch будет работать с перечислимым оператором switch.

...