看看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()
,但在本例中可以忽略)。本质上,params
在PopUtils.打开()功能:
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)
}
}