私の目標は、「キャンセル」と「接続」の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にデフォルトでフォーカスを設定する必要があるようですが、これを行う方法がわかりません。