Как изменить свойства кнопок внутри блоков кнопок в Qt Designer? - PullRequest
6 голосов
/ 20 апреля 2010

Я искал онлайн безрезультатно. Кто-нибудь знает, как получить доступ к кнопке в блоке кнопок (созданном с помощью шаблона «Диалог с кнопками справа»)?

Ответы [ 2 ]

7 голосов
/ 20 апреля 2010

В Designer выберите кнопку OK или Cancel. Затем откройте редактор свойств и прокрутите вниз до раздела QDialogButtonBox. Затем вы можете развернуть элемент standardButtons, чтобы увидеть различные доступные кнопки. Другие свойства, такие как centerButtons, также доступны.

Тем не менее, дизайнер дает вам очень мало контроля над окном кнопок.

В коде вы можете делать много других вещей, например изменять текст, который отображается на «стандартных кнопках». Из документации :

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);

Пока вы задаете имя для кнопки в конструкторе, вы можете устанавливать эти свойства в коде.

2 голосов
/ 05 мая 2015

Я пишу этот ответ для сообщества 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)

Дополнительную информацию можно найти здесь.

...