2017-10-09 2 views
0

Ich mag würde meine eigene Zeichenfolge auf den Button verwenden, in der die unten genannten Funktionen „msgBox.setDefaultButton“ und „msgBox.addButton“:Kann ich meine eigene benutzerdefinierte Zeichenfolge in ‚setDefaultButton‘ verwenden

msgBox.setDefaultButton(QMessageBox::Save); 
msgBox.addButton(QMessageBox::Abort); 

anstelle von "Speichern" und "Abbrechen", die eingebaut sind, möchte ich meinen eigenen Text setzen.

Bitte lassen Sie mich wissen, wenn es möglich ist oder bitte geben Sie mir eine Alternative für die obigen Zeilen, um eine Schaltfläche mit meinem eigenen zufälligen Text zu erstellen.

ex:

msgBox.setDefaultButton(QMessageBox::"Lakshmi"); 
msgBox.addButton(QMessageBox::"Kanth"); 

TIA.

Grüße, Lakshmikanth .G

+0

Statt Texte der Einstellung manuell sollten Sie achten in [wie Qt Übersetzungen behandelt] (https://wiki.qt.io/How_to_create_a_multi_language_application). – nwp

+0

Eigentlich haben wir eine separate eingebaute Funktion, die die Sprachübersetzung behandelt, und wir sollen das verwenden, und ich möchte nur die übersetzte "YES" und "NO" Zeichenfolgenausgabe von dieser eingebauten Funktion innerhalb dieser Tasten verwenden. – SirKappe

Antwort

1

QMessageBox::Save und QMessageBox::Abort sind keine Variablen, wo Sie den Text übernehmen, sondern Teil einer Aufzählung sind und intern erzeugt die Tasten mit den Texten vorher eingestellt. Wenn Sie benutzerdefinierte Texte die addButton() Funktion gesetzt werden soll ist überlastet:

void QMessageBox::addButton(QAbstractButton *button, ButtonRole role) 
QPushButton *QMessageBox::addButton(const QString &text, ButtonRole role) 
QPushButton *QMessageBox::addButton(StandardButton button) 

Also für Ihren Fall, dass Sie eine der anderen Optionen wie unten dargestellt verwenden:

QMessageBox w; 
QPushButton* Lakshmi = w.addButton("Lakshmi", QMessageBox::YesRole); 
w.addButton("Kanth", QMessageBox::NoRole); 
w.setDefaultButton(Lakshmi); 
w.show(); 
+0

Mein vorheriger Code: bool func() { QMessageBox msgBox; bool retValue = false; msgBox.setText (MY_STRING); msgBox.setStandardButtons (QMessageBox :: Yes); msgBox.addButton (QMessageBox :: Nein); if (msgBox.exec() == QMessageBox :: Ja) { retValue = true; } return retWert; } bearbeitet zu: bool func() { QMessageBox msgBox; QMessageBox w; bool retValue = false; msgBox.setText (MY_STRING); \t QPushButton * Lakshmi = w.addButton ("Lakshmi", QMessageBox :: YesRole); \t w.addButton ("Kanth", QMessageBox :: NoRole); } Mache ich es richtig? Bitte lassen Sie mich wissen – SirKappe

+0

Verwendet die gleiche QMessageBox: 'bool func() { \t QMessageBox msgBox; \t bool retValue = false; \t msgBox.setText (MY_STRING); \t QPushButton * Lakshmi = msgBox.addButton ("Lakshmi", QMessageBox :: YesRole); \t msgBox.addButton ("Kanth", QMessageBox :: NoRole); \t if (msgBox.exec() == QMessageBox :: Ja) { \t \t retValue = true; \t} \t zurück retWert; } ', Wenn meine Antwort Ihnen geholfen hat, vergessen Sie bitte nicht, sie als korrekt zu markieren. – eyllanesc

+0

Hallo, ich kann benutzerdefinierte Schaltfläche mit dem angegebenen Namen sehen, aber ich möchte, dass dieser Name eine Variable sein, so dass es basierend auf Systemsprache geändert werden kann, etwas wie unten: std :: string MY_STRING_1 std :: string MY_STRING_2 bool func() { QMessageBox msgBox; bool retValue = false; msgBox.setText (MY_STRING); QPushButton * Lakshmi = msgBox.addButton (MY_STRING_1, QMessageBox :: YesRole); msgBox.addButton (MY_STRING_2, QMessageBox :: NoRole); } aber obige Code funktioniert nicht Fehler: keine passende Funktion für Aufruf von 'QMessageBox :: AddButton (std :: string &, QMessageBox :: ButtonRole)' plz mir helfen. – SirKappe

Verwandte Themen