1

私の目標は、「キャンセル」と「接続」の2つのボタンを使用し、ユーザーがEnterキーを押したときのデフォルトのボタンを「キャンセル」にすることです。また、ユーザーがTabキーを押して次のボタン([接続])に移動し、Enterキーを押して、[接続]を押すことができるようにします。これが私のコードです:

    QPushButton * cancelButton = new QPushButton(tr("&Cancel"));
    cancelButton->setAutoDefault(true);
    cancelButton->setDefault(true);
    cancelButton->setFocus();

    QPushButton * continueButton = new QPushButton(tr("Co&nnect"));
    continueButton->setAutoDefault(true);
    continueButton->setDefault(false);

    ui->buttonBox->addButton(cancelButton, QDialogButtonBox::RejectRole);
    ui->buttonBox->addButton(continueButton, QDialogButtonBox::AcceptRole);

[キャンセル]ボタンをデフォルトのボタンに設定しても、実際には機能していないようです。

たとえば、TabキーとEnterキーを押した後にボタンを押すことができるようにするには、すべてのボタンにautoDefaultプロパティを設定する必要があるようです。これは、autoDefaultのドキュメントと一致しているようです。ただし、デフォルトプロパティのドキュメントには、autoDefaultプロパティが設定されているボタンがない場合にのみデフォルトボタンが押されることが示されているようです。それ以外の場合、ENTERが押されたときに押されるボタンは、現在選択されているautoDefaultボタンになります。したがって、cancelButtonにデフォルトでフォーカスを設定する必要があるようですが、これを行う方法がわかりません。

4

2 に答える 2

4

cancelButton->setFocus();ボタンをに追加した後、前ではなく、呼び出す必要がありますQDialogButtonBox

于 2012-04-09T21:53:49.263 に答える
-1

dialog-> showを呼び出す前に、以下の行を追加してみてください

button->isEnabled(true)
于 2012-04-10T06:37:32.070 に答える