在Qt中键入QLineEdit时显示onscreenkeyboard

时间:2013-08-22 17:03:36

标签: qt show-hide qlineedit on-screen-keyboard

我想在点击 QLineEdit 时显示 osk.exe(onscreenkeyboard),并在关注osk.exe 隐藏最小化? 我该怎么办?

感谢

1 个答案:

答案 0 :(得分:0)

您需要使用QProcess并重新实施方法QLineEdit::focusInEventQLineEdit::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_;
}

(当然用这个osk.exe的确切地址替换C:\\osk.exe)。

然后只使用MyLineEdit代替QLineEdit,它应该有效。我不知道如何隐藏或最小化过程,所以我决定杀死它并在必要时重新启动它; - )