2011-06-23 23 views

Respuesta

1

no haya señales como se hace clic() para QLineEdit, pero se puede subclase y emitir dicha señal en su implementación personalizada de mouseReleaseEvent.

2

I dono si esto ayuda, tuve que llamar a una función una vez que se ingresa un texto. Así es como lo hice.

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

cuando se introduce un texto de señal textEdited se emited, así mi función onTextEdit se llamará.

17

No creo que la subclasificación de un QLineEdit sea la elección correcta. ¿Por qué subclase si no es necesario? En su lugar, podría usar filtros de eventos. Consulte QObject::eventFilter.

Ejemplo:

MyClass::MyClass() : 
    edit(new QLineEdit(this)) 
{ 
    edit->installEventFilter(this); 
} 

bool MyClass::eventFilter(QObject* object, QEvent* event) 
{ 
    if(object == edit && event->type() == QEvent::MouseClick) { 
     // bring up your custom edit 
     return false; // lets the event continue to the edit 
    } 
    return false; 
} 
+1

parece que 'QEvent :: FocusIn' es más apropiado escribe aquí. – gluk47

+0

no hay evento 'QEvent :: MouseClick'. Use 'QEvent :: MouseButtonPres' en su lugar – semanser

4

Aunque no hay un "clic" o evento "entrado". Puede usar el

void cursorPositionChanged(int old, int new) 

Signal. Se emite cuando el usuario hace clic en lineedit (si está habilitado) y también en algunas otras ocasiones, por lo que debe verificar cuál de los eventos ocurrió realmente, pero creo que esto es aún más fácil que crear subclases o usar el detector de eventos para algunas aplicaciones .

Cuestiones relacionadas