我的任务听起来很简单:我想以编程方式按下Qt / C ++中的键盘按钮。所以我想要一些代码,让GUI认为按下了一些键盘键。
如果可能,我不想使用特定于Windows的API。
可以这样做吗?如果是这样,我应该如何/在哪里开始?
答案 0 :(得分:1)
bool MyWidget::event(QEvent *event)
{
if (event->type() == QEvent::KeyPress) {
QKeyEvent *ke = static_cast<QKeyEvent *>(event);
if (ke->key() == Qt::Key_Tab) {
// special tab handling here
return true;
}
} else if (event->type() == MyCustomEventType) {
MyCustomEvent *myEvent = static_cast<MyCustomEvent *>(event);
// custom event handling here
return true;
}
return QWidget::event(event);
}
答案 1 :(得分:1)
模拟/生成用户密钥事件的唯一可靠方法是使用QtTest模块。
#include <QtTest>
#define QT_WIDGETS_LIB
#include <qtestkeyboard.h>
...
// For example:
QTest::keyClick(QApplication::focusWidget(), key, Qt::NoModifier);
// or even more low level:
qt_handleKeyEvent(widget->windowHandle(), QEvent::KeyPress, key, Qt::NoModifier);
qt_handleKeyEvent(widget->windowHandle(), QEvent::KeyRelease, key, Qt::NoModifier);