4

QLineEdit で問題が発生しました。タブオーダーをこの行編集で開始するように設定しても、画面がロードされると、行編集は自動的にフォーカスを取得しません。

私もこの2行で試しました:

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

しかし、これはまだ効果がありません。だから、誰かが同じ問題を経験したのかもしれません...

助けてくれてありがとう、ボリス

4

2 に答える 2

8

別の解決策は、singleShot タイマーを使用することです。

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

アプリケーションが解放されると、フォーカスが設定されます。ボリス。

于 2009-06-17T21:29:05.227 に答える
2

クリシュナに感謝します。qwidget の showEvent() をオーバーライドすると動作します。

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

lineEdit がフォーカスを取得します。他のウィジェットがこれらの 2 行の後にフォーカスを設定したと思います。ありがとう、ボリス

于 2009-06-17T17:37:01.977 に答える