- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个程序可以捕获单个按键,然后输出被按下的键。问题是,我无法返回按下的键的值,也无法让箭头键输出任何内容。这是我的代码:
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/
我有一个QComboBox,它是可编辑的,我实现了keyPressEvent(QKeyEvent *)方法,但它似乎没有触发这个方法。 我能想到发生这种情况的唯一原因是发生的任何编辑实际上都发生在 l
如何处理Qt按下的非拉丁键? 例如,对于按下的“W”键,QKeyEvent::key() 返回 87,但对于“Ц”(俄语布局中的相同键),它返回 1062。 所以我不能使用像 Qt::Key_W 这样
我正在使用 PyQt5。当我编写一个 keyPressEvent 处理程序时,出于调试目的,我希望能够打印出关于按下了哪些键的人类可读的描述。无论事件中按下了多少键,或者它们是修饰符还是“常规”键,我
http://qt-project.org/doc/qt-5/qwidget.html#keyPressEvent Note that QKeyEvent starts with isAccepted
使用Qt-5.7.0,我想要一个QSpinBox来设置超时值。该值可以以秒或分钟为单位。我会在 SpinBox 后面放一个 QLabel 来说明它是什么。 现在,当用户操作控件时,我希望它根据是否按下
我有一个程序可以捕获单个按键,然后输出被按下的键。问题是,我无法返回按下的键的值,也无法让箭头键输出任何内容。这是我的代码: myApp.h class someClass: public QDial
所以,我有一个应用程序,如果按住特定按钮,它会播放音频设备,当释放按钮时,它会停止音频设备。我使用 keyPressEvent 和 KeyReleaseEvent 来实现这个类似于下面的代码: voi
我有一个 Qt 应用程序,其中有多个小部件同时显示按钮。在某些情况下,我希望将按键发送到其中一个小部件,即使该小部件没有焦点。为此,我在主窗口小部件(拥有此应用程序中的所有子窗口小部件)中重写了 ke
我正处于一种情况,我正在尝试读取一个 JSON 配置文件,该文件规定了哪些关键命令映射到给定的操作。例如: ... { "Action": "Quit", "Combo" : "CTR
我想编写一个响应我的按键事件的复古 snaker,这是我的代码: paint.h #ifndef PAINT_H #define PAINT_H #include #include #include
我需要这样做来配置我的应用程序。 我有重新实现的 keyPressEvent 方法的 QLineEdit 字段。 QKeyEvent *ke = ... QString txt; if(ke->mod
我正在尝试实现一个虚拟键盘小部件。我能想到的最简单的方法是创建 QKeyEvent 实例并使用 QApplication.postEvent() 将它们发送到焦点小部件。 首先,我正在尝试更新我拥有的
上下文:我正在创建一个带有自定义屏幕键盘的小型网络浏览器。 它在 Qt WebKit(QWeb* 类)上几乎可以正常工作,但由于 WebKit 中的错误而导致崩溃...在 Qt 5.4.0 之后不会修
当用户用户按下键盘键时,我想做一些特定的事情。因为我在我的程序中有以下使用 qt 和 C++ 的代码:- //reimplemented keyPressEvent // MyWindow inher
我创建了一个键事件,如果我按下“A”键,它将执行函数 A()。 在 A() 函数中,我将全局参数“g”递增 1 并创建一个 QTimer::singleShot 等待 2 秒并打印“g”的值。例如,“
这个问题在这里已经有了答案: How to make keyword to work instantly with no delay in Qt::4.6 (C++)? (1 个回答) 关闭 6 年
我有: QKeyEvent* event; // I pressed "SHIFT" modifiers = event->nativeModifiers(); // This is 513 valu
我有一个带有项目的 qml 窗口 Keys.onPressed { } 我有一个 C++ 类,它有 protected: void keyPressEvent(QKeyEvent *eve
我是一名优秀的程序员,十分优秀!