Я искал онлайн безрезультатно. Кто-нибудь знает, как получить доступ к кнопке в окне кнопки (создан с использованием шаблона «Диалог с кнопками справа»)?Как изменить свойства кнопок в кнопках в Qt 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);
До тех пор, как вы даете кнопки окно имя дизайнера, вы можете установить эти свойства в коде.
Я пишу этот ответ для сообщества 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)
Я бы затем вставить мою кнопку ящик моему макете как ususal:
layout.addWidget(ok_cancel_button, 1, 1)
Теперь позже в моем коде, я могу сделать что-нибудь с моей кнопки , Позволяет изменить свое название:
my_ok_button.setText("Some Other Name")
Итак вещи, чтобы отметить здесь, что:
вы должны установить роль кнопок в AddButton() метод, если вы хотите использовать функциональные данные стандартными кнопками. Например. если вы
хотите сделать что-то вроде ниже, вам нужно сыграть роль кнопки set.ok_cancel_button.accepted.connect (self.ok_method_handler) ok_cancel_button.rejected.connect (self.close)
Я предполагаю код для формы генерируется и хранятся в каком-то файле, поэтому я могу войти в этот файл и изменить свойства кнопки, которые мне нужны? –
Не редактируйте сгенерированный файл. Существуют разные способы работы с сгенерированным кодом, зарегистрированным на странице [Создание и использование компонентов для Qt Designer] (http://doc.trolltech.com/4.6/qtdesigner-components.html). –
@KalebPederson Если я добавлю кнопку OK/Cancel, внутренние кнопки не могут быть нажаты. –