• 17921阅读
  • 5回复

QlineEdit的背景提示的问题 [复制链接]

上一主题 下一主题
离线pengyizhao2
 

只看楼主 倒序阅读 楼主  发表于: 2014-06-06
我想在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中,但是有触发了上面槽的内容,我想提示的内容不能触发这个槽,是不是我用的方法错了,请指教。
离线kimtaikee

只看该作者 1楼 发表于: 2014-06-06
void    setPlaceholderText(const QString &)

离线tmacai

只看该作者 2楼 发表于: 2014-06-06
离线liudianwu

只看该作者 3楼 发表于: 2015-09-18
回 kimtaikee 的帖子
kimtaikee:void    setPlaceholderText(const QString &)
 (2014-06-06 15:48) 

勇哥,太感谢了,没想到QT自带了这个方法!
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线lsyzsl

只看该作者 4楼 发表于: 2016-01-07
focusOutEvent(QFocusEvent *e)在函数最后调用父类的这个函数试试,如:
QLineEdit::focusOutEvent(e);
离线zexjason

只看该作者 5楼 发表于: 2016-11-23
额,  不是有个void setPlaceholderText(const QString &);
....
快速回复
限100 字节
 
上一个 下一个