如何更改Qt Designer中按钮框内按钮的属性?

时间:2010-04-19 22:19:30

标签: c++ qt qt4 designer

我一直在网上搜索无济于事。有没有人知道如何访问按钮框中的按钮(使用“带右按钮的对话框”模板创建)?

2 个答案:

答案 0 :(得分:7)

在Designer中,选择OKCancel按钮。然后打开属性编辑器并向下滚动到QDialogButtonBox部分。然后,您可以展开standardButtons项目以查看可用的各种按钮。其他属性,例如centerButtons属性也可用。

然而,设计师几乎无法控制按钮框。

在代码中,您可以执行许多其他操作,例如更改“标准按钮”上显示的文本。来自documentation

findButton = new QPushButton(tr("&Find"));
findButton->setDefault(true);

moreButton = new QPushButton(tr("&More"));
moreButton->setCheckable(true);
moreButton->setAutoDefault(false);

buttonBox = new QDialogButtonBox(Qt::Vertical);
buttonBox->addButton(findButton, QDialogButtonBox::ActionRole);
buttonBox->addButton(moreButton, QDialogButtonBox::ActionRole);

只要在设计器中为按钮框指定名称,就可以在代码中设置这些属性。

答案 1 :(得分:2)

我正在为Python社区写这个答案。我正在使用PySide并面临类似的问题。我有一个QDialogBu​​ttonBox,我想拥有自己的按钮而不是默认按钮。

我正在使用PySide,它或多或少是c ++代码的精确复制品,所以我相信其他c ++开发人员也可以从中获得一些东西。

我将如何做到这一点:

        my_ok_button = QtGui.QPushButton("My Ok Button")
        my_cancel_button = QtGui.QPushButton("My Cancel Button")
        ok_cancel_button = QtGui.QDialogButtonBox(QtCore.Qt.Horizontal)
        ok_cancel_button.addButton(my_ok_button, QtGui.QDialogButtonBox.ButtonRole.AcceptRole)
        ok_cancel_button.addButton(my_cancel_button, QtGui.QDialogButtonBox.ButtonRole.RejectRole)

然后我会将我的按钮框插入到我的布局中,如下所示:

layout.addWidget(ok_cancel_button, 1, 1)

现在稍后在我的代码中,我可以使用我的按钮做任何事情。让我们改名:

my_ok_button.setText("Some Other Name")

所以这里需要注意的是:

  • 如果你这样做,你必须在addButton()方法中设置按钮的角色 想要使用标准按钮给出的功能。例如。如果你 希望做下面的事情,你需要有按钮角色 集。

    <强> ok_cancel_button.accepted.connect(self.ok_method_handler) ok_cancel_button.rejected.connect(self.close)

More information can be found here.