2013-08-22 5 views

ответ

0

Вы должны использовать QProcess и переопределение методов QLineEdit::focusInEvent и QLineEdit::focusOutEvent. Попробуйте реализовать класс, унаследованный от QLineEdit так:

#include <QLineEdit> 
#include <QProcess> 

class MyLineEdit: public QLineEdit 
{ 
public: 
    MyLineEdit(QWidget * parent = 0): QLineEdit(parent) 
    { 
     process_ = new QProcess(); 
    } 

protected: 
    void focusInEvent(QFocusEvent * e) 
    { 
     QLineEdit::focusInEvent(e); 
     process_->start("start C:\\osk.exe"); 
    } 
    void focusOutEvent(QFocusEvent * e) 
    { 
     QLineEdit::focusOutEvent(e); 
     process_->kill(); 
    } 

private: 
    QProcess * process_; 
} 

(Конечно, заменить C:\\osk.exe на точный адрес этого osk.exe).

Тогда просто используйте MyLineEdit вместо QLineEdit, он должен работать. Я не знаю, как скрыть или свести к минимуму процесс, поэтому я решил убить его и, при необходимости, перезапустить его ;-)

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

  • Нет связанных вопросов^_^