2015-06-10 2 views
0

Я пытаюсь имитировать щелчок мыши внутри QTextEdit в Qt, так как мое приложение не имеет мыши или клавиатуры. Это встроенная аппаратная плата.Имитировать щелчок мыши внутри QTextEdit в Qt?

int main(int argc, char *argv[]) 
{ 

     QApplication a(argc, argv); 
     MainWindow w; 
     w.setWindowFlags(Qt::Window | Qt::FramelessWindowHint); 
     w.setStyleSheet("background-color: Black;"); 
     w.startcomthread(); 
     w.show(); 


     QTextEdit *txt = new QTextEdit(); 
     txt->setWindowFlags(Qt::Window | Qt::FramelessWindowHint); 
     txt->setFocus(); 
     txt->setStyleSheet("background-color: rgb(255, 255, 255,200);"); 
     txt->setGeometry(10,20,100,30); 
     txt->setText("Text 1"); 

     QCursor::setPos((txt->pos()+=QPoint(10,10)));                             
     QMouseEvent * event1 = new QMouseEvent ((QEvent::MouseButtonPress), QPoint(10,10), 
     Qt::LeftButton, 
     Qt::LeftButton, 
     Qt::NoModifier); 

     qApp->postEvent((QObject*)txt,(QEvent *)event1); 

     QMouseEvent * event2 = new QMouseEvent ((QEvent::MouseButtonRelease), QPoint(10,10), 
     Qt::LeftButton, 
     Qt::LeftButton, 
     Qt::NoModifier); 

     qApp->postEvent((QObject*)txt,(QEvent *)event2); 


     txt->show(); 

     return a.exec(); 
} 

При запуске приложения, я просто вижу курсор на моем TextEdit box.I хочет курсор, чтобы быть нажат/по-крайней мере, курсор должен мигать внутри TextEdit виджета.

спасибо.

Edit:

Изображение прилагается Example

+0

Не мигает ли он по умолчанию, когда у него есть фокус? –

+0

Нет, это не мигает. – vk41286

+0

Возможно, это потому, что вы сначала имитируете щелчок мышью, а затем показываете редактирование текста. Попробуйте сначала показать, а затем имитировать щелчок. – Nejat

ответ

0

Перемещение указателя мыши не нужно (хотя вы знаете, почему вам это нужно), но для установки курсора внутри текста редактирования:

editWidget->activateWindow(); // some cases require 
QFocusEvent* eventFocus = new QFocusEvent(QEvent::FocusIn); 
qApp->postEvent(editWidget, (QEvent*)eventFocus); 

И ваш editWidget - 'txt'.

+0

Извините, ничего не происходит. Курсор не мигает. – vk41286

+0

Вы можете видеть, что курсор не мигает – vk41286

+0

Я вижу, что на Windows и Linux Qt-приложения курсор мерцает. :) – AlexanderVX

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