模拟Qt中的鼠标功能



如何使用键盘中的任意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中搜索,有几个关于此主题的线程)。

相关内容

  • 没有找到相关文章

最新更新