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