2010-04-19 14 views

Odpowiedz

6

W Projektancie wybierz przycisk OK lub Cancel. Następnie otwórz edytor właściwości i przewiń w dół do sekcji QDialogButtonBox. Następnie można rozwinąć element standardButtons, aby wyświetlić dostępne przyciski. Dostępne są również inne właściwości, takie jak właściwość centerButtons.

Jednak projektant daje bardzo mało kontroli nad polem przycisku.

W kodzie można wykonać wiele innych czynności, takich jak zmiana tekstu wyświetlanego na "standardowych przyciskach". Od 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); 

tak długo, jak dać przycisk pudełko nazwę w projektanta, można ustawić te właściwości w kodzie.

+0

Zgaduję kod do formularza jest generowany i przechowywane w jakimś pliku, więc mogę przejść do tego pliku i zmienić właściwości przycisku, które muszę? –

+1

Nie edytuj wygenerowanego pliku. Istnieją różne sposoby pracy z wygenerowanym kodem udokumentowanym na stronie [Tworzenie i używanie komponentów dla projektanta Qt] (http://doc.trolltech.com/4.6/qtdesigner-components.html). –

+0

@KalebPederson Jeśli dołączę przycisk OK/Anuluj, nie można kliknąć przycisków wewnętrznych. –

1

Piszę tę odpowiedź dla społeczności Python. Używam PySide i borykałem się z podobnym problemem. Mam QDialogButtonBox i chciałbym mieć własne przyciski zamiast domyślnych.

Używam PySide, która jest mniej więcej dokładną repliką kodu C++, więc wierzę, że inni programiści C++ mogą również coś z niej uzyskać.

Oto w jaki sposób to zrobić:

 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) 

Chciałbym następnie wstawić mój przycisk okno do mojego układu jak ususal:

layout.addWidget(ok_cancel_button, 1, 1) 

Teraz później w moim kodu mogę nic zrobić z moim przycisku . Pozwala zmienić jego nazwę:

my_ok_button.setText("Some Other Name") 

Więc rzeczy do odnotowania jest to, że:

  • należy ustawić rolę przycisków w addButton() metodę, jeśli chcesz korzystać z funkcji podanych za pomocą standardowych przycisków. Na przykład. jeśli chcesz wykonać coś takiego jak poniżej, musisz mieć ustawiony zestaw przycisków ról .

    ok_cancel_button.accepted.connect (self.ok_method_handler) ok_cancel_button.rejected.connect (self.close)

More information can be found here.

Powiązane problemy