Я пишу этот ответ для сообщества 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)
Дополнительную информацию можно найти здесь.