2014-09-24 3 views
-1

키보드의 5 개 키를 사용하여 전체 마우스 기능을 시뮬레이션하는 방법을 알려주십시오. 마우스 커서 이동을위한 처음 네 개의 키. 왼쪽 클릭 이벤트를 생성하는 마지막 키입니다. 커서 이동이 올바르게 작동합니다. 그러나 스핀 상자와 콤보 상자에서는 왼쪽 클릭이 작동하지 않습니다. 여기서 caps lock 키는 왼쪽 클릭 이벤트 생성에 사용됩니다.Qt에서 마우스 기능을 시뮬레이션하십시오

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

모든 경우에 작동하는 방식으로 Qt 이벤트를 사용하여/어떻게 시뮬레이션 할 수 있는지 확실하지 않습니다. 그러나 운영 체제 기능을 사용하여 마우스 클릭을 시뮬레이트하면 매우 간단합니다 (이 주제에 대한 여러 스레드가 있음).

관련 문제