QTextEdit 的 placeholderText 屬性

QTextEdit 的 placeholderText 屬性
 QTextEdit 和 QLineEdit 都有 placeholderText 屬性,即在輸入內容之前,給予用戶一些提示信息。
 但是其二者該屬性對於不同輸入法有不同的表現。具體表現在:
 1、QLineEdit 當輸入內容時,placeholderText內容會自動清空;
 2、QTextEdit 當輸入內容時,placeholderText內容不會自動清空,必須按下空格或者回車鍵,才能將其清空,同時也會將輸入內容顯示到QTextEdit中去。

 這樣的話,就會出現輸入法的輸入顯示框的內容和QTextEdit的placeholderText內容形成重疊的現象。如下圖所示:




解決辦法:

       重新實現 QTextEdit 的inputMethodEvent方法。


頭文件:

#ifndef COMMENTTEXTEDIT_H
#define COMMENTTEXTEDIT_H

#include <QTextEdit>
#include <QInputMethodEvent>

class CommentTextEdit : public QTextEdit
{
    Q_OBJECT

public:
    CommentTextEdit(QWidget *parent = 0);
    ~CommentTextEdit();

protected:
    virtual void inputMethodEvent(QInputMethodEvent *e);

};

#endif // COMMENTTEXTEDIT_H

實現文件:

#include "CommentTextEdit.h"

#include <QDebug>

CommentTextEdit::CommentTextEdit(QWidget *parent)
    : QTextEdit(parent)
{

}

CommentTextEdit::~CommentTextEdit()
{

}

void CommentTextEdit::inputMethodEvent(QInputMethodEvent *e)
{
    if(e->preeditString().isEmpty())
    {
        this->setPlaceholderText(tr("想要交換名片"));
    }
    else
    {
        this->setPlaceholderText(QString::null);
    }

    QTextEdit::inputMethodEvent(e);
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章