QKeyEvent 键按事件未检测到箭头键
QKeyEvent keyPressEvent not detecting arrow keys?
>我有一个程序,它捕获单个按键,然后输出正在按下的键。问题是,我无法返回正在按下的键的值,并且根本无法让箭头键输出任何内容。这是我的代码:
我的应用程式
class someClass: public QDialog
{
Q_OBJECT
public:
...<snip>...
private:
...<snip>...
protected:
void keyPressEvent(QKeyEvent *e);
};
我的应用.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();
}
这里有两个问题。首先,当我键入任何键时,我会在"调试"窗格中获得如下所示的输出:
gw492_32include/QtCore/qstring.h
w492_32include/QtCore/qstring.h
492_32include/QtCore/qstring.h
92_32include/QtCore/qstring.h
我输入abcd
来获得上述内容。key()
不应该给我按下的键的整数值吗?
第二个问题是,当我点击其中一个箭头键时,除了一个空行之外,我在调试窗格中什么也没得到。同样,我不应该看到向上箭头的整数值吗?(此处列出的键的值)。然后,我将如何输出密钥的 ASCII 值?
任何帮助,不胜感激。
输出肯定看起来像是不需要的指针算术正在发生。这是未定义的行为。
"You typed " + e->key()
将指针推进到"You typed "
e->key()
并使其指向另一个位置,在本例中,该位置由您作为输出获取的字符串占用。
如果要正确打印,请执行以下任一操作:
qDebug() << "You typed " << e->key();
qDebug() << "You typed " + QString::number(e->key());
qDebug() << QString("You typed %1").arg(e->key());
相关文章:
- WMI检测进程创建事件-c++
- 检测键按事件 - Qt C++上的插入符号 (^) 键
- QT:检测 QGraphicsItem 上的鼠标左键和右键按下事件
- XCB_POLL_FOR_EVENT未检测到关闭窗口的XCB_CLIENT_MESSAGE事件
- 检测鼠标中键单击事件
- Qt 事件过滤器未检测到对象名称
- 如何检测终止进程事件、计算机关闭和计算机崩溃
- 当光标不在窗口小部件上时,QT小部件检测鼠标事件
- 检测Linux C 上的键盘和密钥事件
- Qt-如何在不使用插槽的情况下检测自定义事件循环中的关闭窗口
- 如何检测全局拖动事件
- Visual Studio 2008 MFC拖动对话框(不带标题)并检测所有鼠标事件
- 蓝牙:使用 Bluez 检测事件
- 是否可以在 MFC 按钮控件上检测到鼠标右键单击事件
- 如何检测全局鼠标按钮事件
- QKeyEvent 键按事件未检测到箭头键
- 如何在Qt中检测Windows事件
- 在Qt GUI事件线程中检测该"I'm running"
- 检测C++中的WM_KEYUP和WM_KEYDOWN事件
- 在C++scott-meyers中检测事件时使用的条件变量