如何在Qt中获取QLineEdit的点击事件?

如何在Qt中获取QLineEdit的点击事件?,qt,Qt,如何在Qt中获取QLineEdit的点击事件 我无法在QLineEdit?中看到与单击相关的任何插槽。您需要在扩展QLineEdit的新类中重新实现focusInEvent。以下链接将对您有所帮助 对于QLineEdit,没有类似于clicked()的信号,但您可以在自定义的mouseReleaseEvent实现中对其进行子类化并发出此类信号,如果这有帮助,我不知道, 输入文本后,我必须调用函数。我就是这样做的 connect(ui->passwordSetLineEdit,SIG

如何在Qt中获取
QLineEdit
的点击事件


我无法在
QLineEdit

中看到与单击相关的任何插槽。您需要在扩展QLineEdit的新类中重新实现focusInEvent。以下链接将对您有所帮助


  • 对于
    QLineEdit
    ,没有类似于
    clicked()
    的信号,但您可以在自定义的
    mouseReleaseEvent
    实现中对其进行子类化并发出此类信号,如果这有帮助,我不知道, 输入文本后,我必须调用函数。我就是这样做的

    connect(ui->passwordSetLineEdit,SIGNAL(textEdited(QString)),this,SLOT(onTextEdit(QString)));
    

    当输入文本时,将发出TextEdit信号,因此将调用我的onTextEdit函数。

    我认为子类化QLineEdit不是正确的选择。如果不需要,为什么要创建子类?您可以改为使用事件过滤器。退房

    例如:

    MyClass::MyClass() :
        edit(new QLineEdit(this))
    {
        edit->installEventFilter(this);
    }
    
    bool MyClass::eventFilter(QObject* object, QEvent* event)
    {
        if(object == edit && event->type() == QEvent::FocusIn) {
            // bring up your custom edit
            return false; // lets the event continue to the edit
        }
        return false;
    }
    
    尽管没有“点击”或“输入”事件。你可以使用

    void cursorPositionChanged(int old, int new)
    

    。当用户单击lineedit(如果已启用)时,它将发出还有一些其他场合,因此您必须验证哪些事件确实发生了,但我认为这比为某些应用程序子类化或使用事件侦听器更容易。

    您要求QLineEdit上的click事件有什么实际原因吗?@emaillenin:Ya,我想在单击textbox时带来另一个自定义控件…看起来
    QEvent::FocusIn
    是更合适的类型。没有
    QEvent::MouseClick
    事件。改用
    QEvent::MouseButtonPres