Показывать на экранной клавиатуре, когда печатаете в QLineEdit в Qt

Я хочу показать osk.exe(экранную клавиатуру), когда нажимаете на QLineEdit и когда фокус osk.exe скрывается или свернут? Как я могу сделать?

Спасибо

1 ответ

Вам нужно использовать 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, он должен работать. Я не знаю, как скрыть или минимизировать процесс, поэтому я решил убить его и перезапустить при необходимости вместо него;-)

Другие вопросы по тегам