16

QtDesigner を使用してダイアログを作成しました。QLineEditダイアログには、デフォルトのコンテンツを持つオブジェクトがあります。ダイアログが初期化され、フォーカスが に移動するとQLineEdit、デフォルトのコンテンツが自動的に選択されるようになり、ユーザーが書き込みを開始すると、以前のコンテンツが上書きされます。

編集:

コンストラクターで:

dialog->accept(); 

connect( dialog, SIGNAL(accepted()), QlineObj, SLOT( selectAll() ) );
4

4 に答える 4

12

これは古い質問ですが、それにもかかわらず、私はここでこの正確な問題の解決策を探しました. 次の方法で解決できます。

から派生したクラスを作成し、ヘッダーQLineEditでオーバーライドします。focusInEvent

void focusInEvent(QFocusEvent *event) override;

次に、次のように実装します。

void MyLineEdit::focusInEvent(QFocusEvent *event)
{
    // First let the base class process the event
    QLineEdit::focusInEvent(event);
    // Then select the text by a single shot timer, so that everything will
    // be processed before (calling selectAll() directly won't work)
    QTimer::singleShot(0, this, &QLineEdit::selectAll);
}

他の誰かがこれをどのように行うことができるのか不思議に思っている場合に備えて;-)

于 2018-08-12T08:54:40.983 に答える
10

電話

lineEdit->selectAll();

デフォルトのテキストを設定した後。(おそらく、ダイアログコンストラクターで。)

于 2010-08-08T13:53:20.843 に答える