2010-04-19 2 views

ответ

6

В Дизайнере выберите 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); 

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

+0

Я предполагаю код для формы генерируется и хранятся в каком-то файле, поэтому я могу войти в этот файл и изменить свойства кнопки, которые мне нужны? –

+1

Не редактируйте сгенерированный файл. Существуют разные способы работы с сгенерированным кодом, зарегистрированным на странице [Создание и использование компонентов для Qt Designer] (http://doc.trolltech.com/4.6/qtdesigner-components.html). –

+0

@KalebPederson Если я добавлю кнопку OK/Cancel, внутренние кнопки не могут быть нажаты. –

1

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

More information can be found here.