Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何转换'extern int getchar(void);`从stdio.h到Qt::Key?_C++_Qt_Char_Keypress_Getchar - Fatal编程技术网

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);
from
stdio.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
映射到。这适用于所有小写字符,还有更多。它可能适用于某些字符,但不适用于所有字符