C++ 如何转换'extern int getchar(void);`从stdio.h到Qt::Key?
基本上,我希望实现的是C++ 如何转换'extern int getchar(void);`从stdio.h到Qt::Key?,c++,qt,char,keypress,getchar,C++,Qt,Char,Keypress,Getchar,基本上,我希望实现的是 void getCharSlot(int ch) { switch (ch) { case Qt::Key_Escape:{dostuff();} case Qt::Key_Tab: {dostuff();} } } 有比较方便的方法吗?这个问题实际上很好地回答了问题本身。我最初在没有意识到的情况下发布了它 extern int getchar (void); fromstdio.h将其类型int转换为我复制的代码中的char 删除
void getCharSlot(int ch)
{
switch (ch) {
case Qt::Key_Escape:{dostuff();}
case Qt::Key_Tab: {dostuff();}
}
}
有比较方便的方法吗?这个问题实际上很好地回答了问题本身。我最初在没有意识到的情况下发布了它
extern int getchar (void);
fromstdio.h
将其类型int
转换为我复制的代码中的char
删除该转换并将整数直接发送到下面的my函数后,此操作正常工作:
void Foo::bar(int ch)
{
const QMetaEnum &keyEnum = QMetaEnum::fromType<Qt::Key>();
QTextStream(stdout) << keyEnum.valueToKey(ch) << endl;
}
void Foo::bar(int ch)
{
常量QMetaEnum&keyEnum=QMetaEnum::fromType();
QTextStream(stdout)什么字符对应于Qt::Key\u Escape?Key\u Escape
不能放在char
中,char
包含什么?如何获取c
的值?我想你有一个getchar()
返回键入的内容,而不是按下的键。这是两个不同的东西。(shift、大写等)@Akiva不幸的是,您必须这样做,两个值之间没有对应关系。:-)这将适用于某些字符,但不是所有字符。windows键与Qt键不同!遗憾的是,没有简单的映射方法them@Felix所有这些都对我有用,我使用高度定制的键盘布局,几乎每一个c角色被重新排列并在不同的修改器上。但是我不使用窗口(我也不想使用),但我很好奇你是否真的尝试过这个?简单的例子:字符e
不映射到Qt::Key\u e
-只有大写的e
映射到。这适用于所有小写字符,还有更多。它可能适用于某些字符,但不适用于所有字符