通过鼠标单击选择完整的默认文本

时间:2012-07-05 14:43:01

标签: qt

我的菜单栏中有一个 QLineEdit 小部件,默认显示文字“按ID搜索”。如何为QLineEdit实现MouseClicked事件处理程序,这样当我单击LineEdit小部件时,将清除默认文本并且用户可以输入他想要搜索的文本?。

到目前为止

#ifndef SEARCH_H
#define SEARCH_H
#include<QLineEdit>

class search : public QLineEdit
{
        signals:
                void clicked();

        protected:
                void mousePressEvent(QMouseEvent *);
};
#endif

2 个答案:

答案 0 :(得分:0)

您只需要将QLineEdit :: mousePressEvent(QMouseEvent * e)信号与函数连接即可。当此信号发出时,清除功能中的QLineEdit。简单地说,不是吗?

修改

或者如果你有

void mousePressEvent(QMouseEvent *);

在您的小部件中,您需要的只是该方法的写入定义。当用户将鼠标按在QLineEdit上时,将调用此函数。像:

void search::mousePressEvent(QMouseEvent *e)
{
    myQLineEdit->setText("");
}

编辑2

然后尝试这样做:

class YourWidget : public QLineEdit
{
    Q_OBJECT

    protected:

    void focusInEvent(QFocusEvent* e);
};

void YourWidget::focusInEvent(QFocusEvent* e)
{    
    if (e->reason() == Qt::MouseFocusReason)    
    {
      myQLineEdit->setText("");
    }

    // You might also call the parent method.
    QLineEdit::focusInEvent(e);
}

答案 1 :(得分:0)

您需要使用QLineEdit::placeholderText属性。它显示一个灰色文本,当用户开始编辑时它会消失(即当它获得焦点时)。

QLineEdit * edit = new QLineEdit;
edit->setPlaceholderText("Search by ID");