【问题标题】:Show message dialog显示消息对话框
【发布时间】:2019-09-12 20:11:27
【问题描述】:

当用户点击 QML 窗口中的按钮时,是否可以显示 QML 对话框?

示例:

当用户在Help -> About 上的菜单栏中单击时,应显示关于对话框:

import QtQuick 2.12
import QtQuick.Layouts 1.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12

import "components"

ApplicationWindow {
    id: window
    visible: true
    width: 1040
    height: 480


    aboutDlg: aboutDialog {}  // does not work...

    menuBar: MenuBar {
        Menu {
            title: qsTr("Help")
            MenuItem {
                text: qsTr("About")
                onTriggered: aboutDlg.open();
        }
    }
    ...

组件/AboutDialog.qml

import QtQuick 2.2
import QtQuick.Dialogs 1.1

MessageDialog {
    id: aboutDialog
    title: "May I have your attention please"
    text: "It's so cool that you are using Qt Quick."
    onAccepted: {
        console.log("And of course you could only agree.")
        Qt.quit()
    }
}

当我删除boutDlg: aboutDialog {} // does not work...这一行时,点击关于菜单项时报以下错误:

qrc:/main.qml:61: ReferenceError: aboutDlg is not defined

我怎样才能做到这一点?

【问题讨论】:

  • 更多信息是here。我还建议从 this 漂亮的书开始学习 QML。

标签: qt qml qtquick2 qt5.12


【解决方案1】:

您调用了“aboutDialog”,它是 AboutDialog 中的一个 ID。 把它想象成你添加一个对象,就像添加一个矩形......它有自己的文件......你可以通过像这样添加一个对象来“实例化”它:

...

ApplicationWindow {

...

    AboutDialog {
        id: aboutDlg
    }

...
}

你可以找到例子HERE

您还可以进行一些优化,并将 AboutDialog 放在 Loader 中。

【讨论】:

  • 请添加一些解释。在 SO 中不鼓励仅代码答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-19
  • 2017-08-01
相关资源
最近更新 更多