如何创建对话框并动态设置标题和文本

如何创建对话框并动态设置标题和文本

看看Ubuntu SDK 文档中的对话框组件示例,看起来对话框应该被定义为具有固定标题和文本的静态组件。或者至少我不知道如何在显示对话框之前更改它。

我也曾被暗示过PopupBase 类的 show() 方法Dialog 所基于的,但我还没有弄清楚如何将它们用于我的目的。

我的代码中有一个信号处理程序,我想在其中打开一个对话框并动态设置标题和文本。

onSomethingHappened: {
   /* Open a dialog and set the title and text properties */
}

我怎样才能做到这一点?

答案1

这不能回答您的问题,因为对话框文本不会直接改变,但它可能是您的问题的答案,因为对话框文本会动态地改变自身:- )

假设您有一些触发的项目onSomethingHappened,您可以将对话框的属性连接到项目的属性。

例子:

Item {
  Component {
     id: dialog
     Dialog {
        id: dialogue
        title: someID.dialogTitle
        text: someID.dialogText
        Button {
            text: "cancel"
            onClicked: PopupUtils.close(dialogue)
        }
     }
  }
}

SomeItem {
  id: someID
  property string dialogTitle
  property string dialogText
  onSomethingHappened: {
     dialogTitle = "Hello David"
     dialogText = "Whats up?"
     PopupUtils.open(dialog)
  }
}

答案2

我发现我可以使用代码中的以下代码片段来执行此操作(root是该方法的调用者 ID open(),但在本例中可以忽略)。本质上,paramsPopUtils.打开()功能:

PopupUtils.open(Qt.resolvedUrl("QrCodeDialog.qml"), root, {
                    title: i18n.tr("This is the title"),
                    text: i18n.tr("This is the text")
                })

然后QrCodeDialog.qml文件包含:

import QtQuick 2.0
import Ubuntu.Components 0.1
import Ubuntu.Components.Popups 0.1

Dialog {
    id: qrcodedialog
    title: ""
    text: ""

    Button {
        text: i18n.tr("Close")
        onClicked: PopupUtils.close(qrcodedialog)
    }
}

相关内容