如何使用键盘中的任意5个键模拟整个鼠标功能?鼠标光标移动的前四个键。生成左键单击事件的最后一个键。光标移动正常。但是左键单击不适用于旋转框和组合框。这里大写锁定键用于生成左键单击事件。
void MainWindow :: keyPressEvent(QKeyEvent *event)
{
switch(event->key())
{
case Qt::Key_CapsLock:
QPoint pt(m_pqCursObj->pos().x(),m_pqCursObj->pos().y());
cursor().setPos(pt);
QMouseEvent * event1 = new QMouseEvent ((QEvent::MouseButtonPress), QPoint(1,1),
Qt::LeftButton,
Qt::LeftButton,
Qt::NoModifier);
QCoreApplication::sendEvent(this,event1);
QMouseEvent * event2 = new QMouseEvent ((QEvent::MouseButtonRelease), QPoint(1,1),
Qt::LeftButton,
Qt::LeftButton,
Qt::NoModifier);
QObject * ObjunderPos = static_cast<QObject*>(QApplication::widgetAt(QCursor::pos()));
QWidget * qWidget = new QWidget;
qWidget = (QWidget *)ObjunderPos;
if(ObjunderPos)
{
qDebug()<<"Qobject";
if (qobject_cast<QLineEdit*>(qWidget))
qWidget->setFocus();
QCoreApplication::sendEvent(ObjunderPos,event1);
QCoreApplication::sendEvent(ObjunderPos,event2);
}
break;
}
}
我不确定是否/如何使用Qt事件来模拟它在所有情况下都能工作。然而,如果您使用操作系统功能模拟鼠标单击,则会非常容易(在SO中搜索,有几个关于此主题的线程)。