如何使用键盘上的任意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;
}
}
答案 0 :(得分:0)
我不确定是否/如何使用Qt事件以适用于所有情况的方式模拟此事件。但是,如果您使用操作系统函数模拟鼠标单击,那将非常简单(在SO中搜索,有关于此主题的几个主题)。