如何更改QDialogBox中的默认QPushButton

时间:2012-04-09 21:40:20

标签: c++ qt

我的目标是有两个按钮,“取消”和“连接”,并在用户按下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的文档有关。但是,default property的文档似乎表明只有在没有设置autoDefault属性的按钮时才会推送默认按钮。否则,按下ENTER时按下的按钮将是当前选择的autoDefault按钮。因此,我需要做的是默认情况下使cancelButton具有焦点,但我似乎无法弄清楚如何做到这一点。

2 个答案:

答案 0 :(得分:4)

将按钮添加到cancelButton->setFocus();后,您必须先致电QDialogButtonBox,而不是之前。

答案 1 :(得分:0)

在调用dialog-> show

之前尝试添加以下行
button->isEnabled(true)