gpt4 book ai didi

c++ - QKeyEvent keyPressEvent 没有检测到方向键?

转载 作者:行者123 更新时间:2023-11-28 02:12:16 24 4
gpt4 key购买 nike

我有一个程序可以捕获单个按键,然后输出被按下的键。问题是,我无法返回按下的键的值,也无法让箭头键输出任何内容。这是我的代码:

myApp.h

class someClass: public QDialog
{
Q_OBJECT

public:
...<snip>...

private:
...<snip>...

protected:
void keyPressEvent(QKeyEvent *e);
};

myApp.cpp

MyApp::MyApp(QWidget *parent) :
QDialog(parent),
ui(new Ui::myApp)
{
QWidget::grabKeyboard();
ui->setupUi(this);
}

void someClass::keyPressEvent(QKeyEvent *e)
{
qDebug() << "You typed " + e->key();
}

这里有两个问题。首先,当我键入任意键时,我会在“调试” Pane 中得到如下输出:

gw492_32\include/QtCore/qstring.h
w492_32\include/QtCore/qstring.h
492_32\include/QtCore/qstring.h
92_32\include/QtCore/qstring.h

我输入了 abcd 得到上面的内容。 key() 不应该给我按下的键的整数值吗?

第二个问题是,当我按下其中一个箭头键时,调试 Pane 中除了空行外什么也没有。同样,我不应该看到向上箭头的整数值吗? (列出的键值 here )。我将如何输出 key 的 ASCII 值?

感谢任何帮助。

最佳答案

输出看起来确实像是发生了不需要的指针运算。这是未定义的行为。

"You typed " + e->key()

通过 e->key() 将指向 "You typed " 的指针向前移动,并使其指向另一个位置,在本例中,该位置由字符串 you '作为输出。

如果要正确打印,请执行以下任一操作:

qDebug() << "You typed " << e->key();
qDebug() << "You typed " + QString::number(e->key());
qDebug() << QString("You typed %1").arg(e->key());

关于c++ - QKeyEvent keyPressEvent 没有检测到方向键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35248339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com