首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QKeyEvent keyPressEvent没有检测到箭头键吗?

QKeyEvent keyPressEvent没有检测到箭头键吗?
EN

Stack Overflow用户
提问于 2016-02-07 00:34:22
回答 1查看 2.1K关注 0票数 0

我有一个程序,捕捉一个单一的按键,然后输出的键,是按下。问题是,我无法返回按下的键的值,并且无法获得箭头键来输出任何内容。这是我的密码:

myApp.h

代码语言:javascript
复制
class someClass: public QDialog
{
  Q_OBJECT

public:
  ...<snip>...

private:
  ...<snip>...

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

myApp.cpp

代码语言:javascript
复制
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();
}

这里有两个问题。首先,当我键入任何键时,就会得到输出,类似于调试窗格中的以下内容:

代码语言:javascript
复制
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()不应该给我按下的键的整数值吗?

第二个问题是,当我按下一个箭头键时,除了一个空行外,我在调试窗格中什么也得不到。同样,我不应该看到向上箭头的整数值吗?(列出的这里键的值)。然后如何输出密钥的ASCII值?

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-07 00:39:41

输出看起来肯定是不想要的指针算法正在发生。这是不确定的行为。

代码语言:javascript
复制
"You typed " + e->key()

通过"You typed "通过e->key()将指针向前推进,并使其指向另一个位置,在本例中,该位置被作为输出的字符串占用。

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

代码语言:javascript
复制
qDebug() << "You typed " << e->key();
qDebug() << "You typed " + QString::number(e->key());
qDebug() << QString("You typed %1").arg(e->key());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35248339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档