私の目標は、「キャンセル」と「接続」の2つのボタンを使用し、ユーザーがEnterキーを押したときにキャンセルをデフォルトのボタンにすることです。私はまた、ユーザーが次のボタン( "Connect")をタップしてEnterを押して、 "Connect"をプッシュすることができるようにしたい。私のコードは次のとおりです:QDialogBoxでデフォルトのQPushButtonを変更する方法
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);
デフォルトボタンにキャンセルボタンを設定しても、実際には動作していないようです。
すべてのブーンでautoDefaultプロパティを設定することは、たとえばTabキーを押してEnterキーを押した後にボタンを押すことができるようにするために必要なようです。これはautoDefaultのドキュメントを参照しているようです。ただし、default propertyのドキュメントは、autoDefaultプロパティが設定されたボタンがない場合にのみ、デフォルトのボタンが押されることを示しているようです。それ以外の場合、ENTERを押すと押されたボタンは、現在選択されているautoDefaultボタンになります。ですから、私がする必要があるのは、デフォルトでcancelButtonにフォーカスがあるようにすることですが、これを行う方法を理解できないようです。
感謝を示し、これはそれをやりました。あなたが言ったように、QDialogButtonBoxにボタンを追加した後、それを行う必要がありました。 – dgrant