我的菜单栏中有一个 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
答案 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");