2009-06-08 2 views
4

Ich habe ein Problem mit einem QLineEdit. Selbst wenn ich die Tab-Reihenfolge so festlege, dass sie bei dieser Zeilenbearbeitung beginnt, wird der LINE-Editor nach dem Laden des Bildschirms nicht automatisch den Fokus erhalten.Qt 4.5 Fokus funktioniert nicht auf QLineEdit

Ich habe auch mit diesen beiden Linien versucht:

this->activateWindow(); 
this->lineEdit_password->setFocus(); 

Das hat aber noch keine Wirkung. Also vielleicht jemand das gleiche Problem erlebt ...

Vielen Dank im Voraus für Ihre Hilfe, Boris

+1

Als ersten Test könnten Sie versuchen, das showEvent() für das Fenster zu überschreiben. Rufen Sie in showEvent() 'this-> lineEdit_password-> setFocus();' – Krsna

Antwort

8

Eine andere Lösung ist es, einen Singleshot-Timer zu verwenden:

QTimer::singleShot(0,lineEdit,SLOT(setFocus())); 

Der Fokus wird dann einmal eingestellt werden, die Anwendung ist kostenlos. Boris.

2

Vielen Dank Krishna, das Überschreiben des Showevent() des QWidget arbeiten:

void OScreenLogin::showEvent(QShowEvent* e){ 
    this->activateWindow(); 
    this->lineEdit_password->setFocus(); 
    QWidget::showEvent(e); 
} 

Das LineEdit bekommt den Fokus, ich denke, dass ein anderes Widget den Fokus nach diesen beiden Zeilen gesetzt hatte. Nochmals vielen Dank, Boris