2016-07-28 22 views
4

ich in meinem main.qmlQML: MessageDialog, die Reihenfolge der standardButtons und Einstellung Standardschaltfläche

MessageDialog { 
    id: exitDialog 
    title: "Quit" 
    text: "Save before quitting?" 
    icon: StandardIcon.Question 
    standardButtons: StandardButton.Save| StandardButton.Discard | StandardButton.Cancel 
    onAccepted: { 
    ... 
    } 
    onDiscard: Qt.quit() 
} 

Das Problem ist jedoch der folgende Code haben, ist die Tasten für mich so nah erscheinen ohne Speichern Abbrechen und letzte Sparen! Die Standardschaltfläche wird als Schließen festgelegt, ohne zu speichern. Ich möchte meine Reihenfolge der Schaltflächen im Code gepflegt und auch standardmäßig als speichern festgelegt. Wer hat solche Probleme? irgendwelche Vorschläge ?

Ich habe diese Antwort How to set the default button of a MessageDialog in QML? gesehen aber wie mache ich es für StandardButtons?

Antwort

0

Nur um eine Idee zu geben. http://doc.qt.io/qt-5/qmessagebox.html

Die Anzeigereihenfolge für die Schaltflächen ist plattformabhängig. Beispielsweise wird unter Windows Save links von Cancel angezeigt, während unter Mac OS die Reihenfolge umgekehrt ist.

Markieren Sie eine Ihrer Standardschaltflächen als Standardschaltfläche.

QMessageBox msgBox; 
msgBox.setText("The document has been modified."); 
msgBox.setInformativeText("Do you want to save your changes?"); 
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); 
msgBox.setDefaultButton(QMessageBox::Save); 
int ret = msgBox.exec(); 
+0

Die Frage ist etwa MessageDialog QML und nicht C++ QMessageBox – Mailerdaimon

+0

Sie haben zwar ein Teil der Frage der Bestellung beantwortet, fand ich auch, dass ich dort viel Kontrolle nicht haben. Aber die Frage ist, gibt es eine Möglichkeit, dies zu überschreiben? – itsnevertoobadtoaskforhelp

+0

Leider, wie @Mailerdaimon erwähnt hat, ist es kein QML-Code. Ich kenne bereits den Standard in QT C++ – itsnevertoobadtoaskforhelp