2014-09-24 342 views
-1

任何人都可以幫助我如何使用鍵盤上的任意5個鍵模擬整個鼠標功能。前四個鍵用於鼠標光標移動。生成左鍵單擊事件的最後一個鍵。 光標移動正常工作。但左鍵單擊不適用於旋轉框和組合框。這裏大寫鎖定鍵用於生成左鍵單擊事件。在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事件來模擬這種情況,在任何情況下都能正常工作。但是,如果您使用操作系統函數模擬鼠標點擊,它將非常容易(在SO中搜索,關於此主題有幾個線程)。