2012-04-09 8 views
1

私の目標は、「キャンセル」と「接続」の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にフォーカスがあるようにすることですが、これを行う方法を理解できないようです。

答えて

4

QDialogButtonBoxにボタンを追加した後は、cancelButton->setFocus();に電話をかけてください。あなたがdialog-呼び出す前に、線の下に追加

+0

感謝を示し、これはそれをやりました。あなたが言ったように、QDialogBu​​ttonBoxにボタンを追加した後、それを行う必要がありました。 – dgrant

0

てみてください>

button->isEnabled(true) 
+2

ボタンはデフォルトで有効になっています。そして、 'isEnabled()'だけがチェックします。おそらく 'setEnabled(bool)'を意味します。 – RedX

関連する問題