我一直在网上搜索无济于事。有没有人知道如何访问按钮框中的按钮(使用“带右按钮的对话框”模板创建)?
答案 0 :(得分:7)
在Designer中,选择OK
或Cancel
按钮。然后打开属性编辑器并向下滚动到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并面临类似的问题。我有一个QDialogButtonBox,我想拥有自己的按钮而不是默认按钮。
我正在使用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)强>