QML:MessageDialog,standardButtons的排序和设置默认按钮

时间:2016-07-28 09:21:03

标签: qt qml qt5 qt5.5

我在main.qml中有以下代码

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

然而问题是我的按钮显示为关闭而没有保存取消和上次保存!默认按钮设置为关闭而不保存。 我希望维护代码中的按钮顺序,并默认设置为保存。任何人都面临这样的问题?有什么建议吗?

我看到了这个答案 How to set the default button of a MessageDialog in QML? 但是我如何为standardButtons做呢?

1 个答案:

答案 0 :(得分:0)

只是想一个主意。 http://doc.qt.io/qt-5/qmessagebox.html

按钮的显示顺序取决于平台。例如,在Windows上,“保存”显示在“取消”的左侧,而在Mac OS上,顺序则反转。

将您的一个标准按钮标记为默认按钮。

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