2014-09-24 3 views
-1

Любой поможет мне смоделировать всю функциональность мыши с помощью любых 5 клавиш на клавиатуре. первые четыре клавиши для перемещения курсора мыши. последний ключ для генерации события щелчка левой кнопкой мыши. Движение курсора правильно работает. Но левый клик не работает для спин-боксов и комбинированных ящиков. здесь клавиша блокировки крышки используется для генерации события щелчка левой кнопкой мыши.Имитировать мышь Fuctionality в 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, есть несколько потоков по этой теме).

Смежные вопросы