是否有可能跟踪如果QLineEdit被点击

Is it possible to track if QLineEdit was clicked on?

本文关键字:QLineEdit 如果 有可能 跟踪 是否      更新时间:2023-10-16

文档是怎么说的


QPushButton有一个clicked()信号所以我们可以这样做

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

QLineEdit有一个textEdited()信号,允许跟踪编辑动作。

我想达到的目标


我试图运行一个功能时,QLineEdit刚刚被点击,没有编辑。这可能吗?

您可以子类化QLineEdit并重新实现QWidget::focusInEvent,在那里您可以检查焦点的原因是否为鼠标单击。然后使用这个子类代替QLineEdit。你也可以创建一个自定义信号,并从这个事件处理程序中发出它,以便能够通过signal/slots使用它。

#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();
};
相关文章: