Qml 系统对话框';s背景未模糊/变黑
我创建了一个dialog.qml以下是代码:Qml 系统对话框';s背景未模糊/变黑,qml,blackberry-10,blackberry-cascades,Qml,Blackberry 10,Blackberry Cascades,我创建了一个dialog.qml以下是代码: Dialog { id: dialog signal sampleSignal(string text); attachedObjects: [ TextStyleDefinition { id: titleStyle base: SystemDefaults.TextStyles.BigText color: Color.create
Dialog {
id: dialog
signal sampleSignal(string text);
attachedObjects: [
TextStyleDefinition {
id: titleStyle
base: SystemDefaults.TextStyles.BigText
color: Color.create("#60323C")
},
TextStyleDefinition {
id: titleTextStyle
base: SystemDefaults.TextStyles.TitleText
color: Color.Black
}
]
Container {
id: mainContainer
preferredWidth: 700
layout: DockLayout {}
verticalAlignment: VerticalAlignment.Center;
horizontalAlignment: HorizontalAlignment.Center;
background: Color.create("#f9f7f2")
Container {
layout: StackLayout {}
horizontalAlignment: HorizontalAlignment.Center
verticalAlignment: VerticalAlignment.Center
Container {
layout: DockLayout {}
background: Color.create("#F4E9E1");
horizontalAlignment: HorizontalAlignment.Fill;
preferredHeight: 120
rightPadding: 10
leftPadding: 10
Label {
text: "Members" ;
verticalAlignment: VerticalAlignment.Center;
textStyle{
base: titleStyle.style
}
}
ImageView {
verticalAlignment: VerticalAlignment.Center;
horizontalAlignment: HorizontalAlignment.Right;
imageSource: "asset:///images/close_button.png"
onTouch: {
dialog.close();
}
}
}
Container {
layout: StackLayout {}
topPadding: 20
bottomPadding: 20
rightPadding: 10
leftPadding: 10
TextField {
id: name
hintText: "Add email address"
input {
submitKey: SubmitKey.Submit;
onSubmitted: {
cppObj.onEmailDoneClicked(name.text, "");
}
}
}
Divider {}
ImageButton {
id: doneButton
defaultImageSource: "asset:///images/button_done.png"
horizontalAlignment: HorizontalAlignment.Center;
onClicked: {
cppObj.onEmailDoneClicked(name.text, "");
doneButton.textAdded();
}
function textAdded() {
dialog.sampleSignal(name.text);
dialog.close();
}
}
}
}
}
}
我把这个对话叫做这里
ImageButton {
id: btnaddmore
defaultImageSource: "asset:///images/button_add.png"
onClicked: {
//controller.showProjectsPage();
openDialog();
}
这里的问题是,当对话框弹出时,屏幕不会变黑或模糊,不像我们真正期望的系统对话框那样弹出,而背景会模糊,就像iOS中的覆盖一样
这是当前生成的结果:
由于您使用的是自定义对话框,因此需要自己完成。因此,如果您想关闭并禁用基础页面的所有触摸事件,请将其放在打开自定义对话框的位置(即
ImageButton
):
ImageButton{
id:btnaddmore
defaultImageSource:“asset:///images/button_add.png"
再次点击:{
//controller.showProjectsPage();
//---断电和禁用
underlineContainer.touchPropagationMode=touchPropagationMode.None;
UnderlineContainer.opacity=0.3;
//---断电和禁用
openDialog();
}
与此类似,您必须在关闭对话框时恢复控件(在onBack()
underyingcontainer.touchprogationmode=touchprogationmode.Full;
UnderlineContainer.opacity=1.0;
下面是修改后的代码对话框,当您按下“x”按钮时,将发出信号back()
(如果代码正确):
对话框{
id:对话框
发回信号();
信号样本信号(字符串文本);
附件:[
TextStyleDefinition{
id:标题样式
基本值:SystemDefaults.TextStyles.BigText
颜色:颜色。创建(“60323C”)
},
TextStyleDefinition{
id:titleTextStyle
基础:SystemDefaults.TextStyles.TitleText
颜色:颜色。黑色
}
]
容器{
id:主容器
首选宽度:700
布局:DockLayout{}
垂直对齐:垂直对齐。中心;
水平对齐:水平对齐。居中;
背景:颜色。创建(“f9f7f2”)
容器{
布局:StackLayout{}
水平对齐:水平对齐。居中
垂直对齐:垂直对齐。中心
容器{
布局:DockLayout{}
背景:颜色。创建(“F4E9E1”);
水平对齐:水平对齐。填充;
首选身高:120
右侧填充:10
左侧填充:10
标签{
案文:“成员”;
垂直对齐:垂直对齐。中心;
文本样式{
基础:标题样式
}
}
图像视图{
垂直对齐:垂直对齐。中心;
水平对齐:水平对齐。右;
图像源:“asset:///images/close_button.png"
onTouch:{
背();
dialog.close();
}
}
}
容器{
布局:StackLayout{}
加总:20
底部填充:20
右侧填充:10
左侧填充:10
文本字段{
id:姓名
hintText:“添加电子邮件地址”
输入{
submitKey:submitKey.Submit;
提交:{
cppObj.onEmailDoneClicked(name.text,“”);
}
}
}
除法器{}
图像按钮{
id:doneButton
defaultImageSource:“asset:///images/button_done.png"
水平对齐:水平对齐。居中;
再次点击:{
cppObj.onEmailDoneClicked(name.text,“”);
doneButton.textAdded();
}
函数textAdded(){
dialog.sampleSignal(name.text);
dialog.close();
}
}
}
}
}
}
改用系统对话框。不可能实现使用SystemDialog
类提供的自定义对话框的UI外观。唯一可能的方法是使用SystemPrompt
,但是它仍然非常有限,无法进一步自定义。正如我之前所写的,您需要包含在关闭对话框时调用的某个处理程序中,将页面恢复到以前的状态(读取-发出一些信号)。由于您的对话框是自定义对话框,因此没有此类处理程序,您需要自己实现。我在修改后的答案中为您完成了这项工作,因此,如果您熟悉QML中的信号/插槽范例,我希望您能够清楚地了解如何处理它