是否可以跟踪是否点击了QLineEdit?

时间:2015-05-22 17:01:54

标签: c++ qt

文件说什么

QPushButton有一个clicked()信号,所以可以做这样的事情

connect(ui->Btn,SIGNAL(clicked()),this,SLOT(DoSmth()));

QLineEdit有一个textEdited()信号,可以跟踪编辑操作。

我想要实现的目标

我正在尝试在刚刚点击QLineEdit时运行一个函数,而不是编辑。这可能吗?

1 个答案:

答案 0 :(得分:0)

您可以继承QLineEdit并重新实现QWidget :: focusInEvent,您可以在其中检查焦点的原因是否是鼠标单击。然后使用此子类而不是QLineEdit。您可以创建自定义信号并从此事件处理程序中发出它,以便能够通过信号/插槽使用它。

#include <QLineEdit>
#include <QFocusEvent>

class FocusHandlerLineEdit : public QLineEdit
{
    Q_OBJECT
protected:
    void focusInEvent(QFocusEvent * event) {
        QLineEdit::focusInEvent(event);
        if(event->reason() == Qt::MouseFocusReason)
            emit gotFocus();
    }

signals:
    void gotFocus();
};