标题:QlineEdit的背景提示的问题
作者:pengyizhao2
日期:2014-06-06 14:48
内容:
我想在QLineEdit中做一个输入搜索功能,并且在没有输入的时候在lineEdit中显示提示内容例如这样子我实现的代码如下
重写QLIneEdit:
InputLineEdit::InputLineEdit(QString&tips,QWidget *parent) :
QLineEdit(parent)
{
Tips=tips;
this->setText(tips);
}
void InputLineEdit::focusInEvent(QFocusEvent *e)
{
if(this->text()==Tips)
{
this->setText("");
}
this->setFocus();
}
void InputLineEdit::focusOutEvent(QFocusEvent *e)
{
if(this->text().isEmpty())
{
this->setText(Tips);
}
}
调用的代码:
QString str="请输入盒子编号";
lineEdit=new InputLineEdit(str,ui->widget_search);
调用这个信号和槽的功能是每输入一个就触发搜索出于LineEdit对应的内容显示
connect(lineEdit,SIGNAL(textChanged(QString)),this,SLOT(LineEditTextChang(QString)));
出现的问题如下:
刚开始的时候我一点击LineEdit的是提示内容清除,光标不出来,要双击才出来还不闪烁,输入一个文本才闪烁,然后失去焦点的时候提示文本的内容显示在LineEdit中,但是有触发了上面槽的内容,我想提示的内容不能触发这个槽,是不是我用的方法错了,请指教。
#1 [kimtaikee 06-06 15:48]
voidsetPlaceholderText(const QString &)
#2 回 kimtaikee 的帖子 [liudianwu 09-18 10:28]
kimtaikee:void setPlaceholderText(const QString &)
(2014-06-06 15:48)
勇哥,太感谢了,没想到QT自带了这个方法!
#3 [lsyzsl 01-07 13:53]
focusOutEvent(QFocusEvent *e)在函数最后调用父类的这个函数试试,如:
QLineEdit::focusOutEvent(e);
#4 [zexjason 11-23 11:03]
额,不是有个void setPlaceholderText(const QString &);
....