在使用QTextEdit 设置了placeholderText 为“请输如其他理由”,然后再实际输入的时候,当输入法为中文的时候,还未按下回车键的时候,placeholderText 与未输入的中文进行重叠,现象如下:
解决方案:重写QTextEdit的下面的方法
void inputMethodEvent(QInputMethodEvent *e);
.h头文件
#ifndef QCTASKSCOREREASONTEXTEDIT_H
#define QCTASKSCOREREASONTEXTEDIT_H
#include <QTextEdit>
#include <QInputMethodEvent>
class QcTaskScoreReasonTextEdit : public QTextEdit
{
public:
QcTaskScoreReasonTextEdit(QWidget *parent = 0);
~QcTaskScoreReasonTextEdit();
protected:
virtual void inputMethodEvent(QInputMethodEvent *e);
};
#endif // QCTASKSCOREREASONTEXTEDIT_H
.cpp文件:
#pragma execution_character_set("utf-8")
#include "QcTaskScoreReasonTextEdit.h"
#include <QtWidgets>
QcTaskScoreReasonTextEdit::QcTaskScoreReasonTextEdit(QWidget *parent) :
QTextEdit(parent)
{
}
QcTaskScoreReasonTextEdit::~QcTaskScoreReasonTextEdit()
{
}
void QcTaskScoreReasonTextEdit::inputMethodEvent(QInputMethodEvent *e)
{
if(e->preeditString().isEmpty())
{
this->setPlaceholderText(tr("请输入其他理由"));
}
else
{
this->setPlaceholderText(QString::null);
}
QTextEdit::inputMethodEvent(e);
}