- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正处于一种情况,我正在尝试读取一个 JSON 配置文件,该文件规定了哪些关键命令映射到给定的操作。例如:
...
{
"Action": "Quit",
"Combo" : "CTRL+Q"
},
...
从组合标记构造一个 QKeySequence
很简单,但我需要监视 QKeyEvent
以触发操作。请注意,我有监视QKeyEvent
,因为它们在应用程序中也用于其他目的。也就是说,仅监视 QKeySequence
的键命令是 Not Acceptable (如果可能的话)。
如果没有编写自定义解析器来为每个 "Combo"
标记构造一个 QKeyEvent
对象,是否可以将 QkeyEvent
与一个 QKeySequence
?例如:
QKeyEvent KeyCommandsHandler::toKeyEvent(QKeySequence sequence) {
//somehow convert to QKeyEvent
}
最佳答案
通常,您不能比较QKeyEvent
和QKeySequence
对象。 QKeyEvent
表示按下或释放单个键的事件,而QKeySequence
可以包含最多四个的序列> 键,每个键都带有可选的修饰符信息。
但是,如果您确定您的键序列将始终只包含一个键,则可以比较这些对象:
bool isEquiv(const QKeyEvent& event, const QKeySequence& seq)
{
if (seq.count() != 1)
return false;
return seq[0] == (event.key() | event.modifiers());
}
你甚至可以为QKeyEvent
写一个转换函数到QKeySequence
:
QKeySequence toKeySequence(const QKeyEvent& event)
{
return QKeySequence(event.key() | event.modifiers());
}
请注意,将 QKeySequence
转换为 QKeyEvent
是没有意义的,因为您必须选择特定的事件类型,例如 QEvent: :KeyPress
或 QEvent::KeyRelease
。
关于c++ - QKeySequence 到 QKeyEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10383418/
我有一个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
我是一名优秀的程序员,十分优秀!