0

我想在单击QLineEdit时显示osk.exe(onscreenkeyboard)并且当关注 osk.exe隐藏最小化时?我能怎么做?

谢谢

4

1 回答 1

0

您需要使用 aQProcess并重新实现方法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_;
}

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

然后只需使用 aMyLineEdit而不是 a QLineEdit,它应该可以工作。我不知道如何隐藏或最小化该进程,因此我决定将其杀死并在必要时重新启动它;-)

于 2013-08-30T04:36:12.650 回答