показывать экранную клавиатуру при вводе QLineEdit в Qt

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

Спасибо


person Sarkhan    schedule 22.08.2013    source источник


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

person Boris Dalstein    schedule 30.08.2013