Qml 系统对话框';s背景未模糊/变黑

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.qml以下是代码:

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中的信号/插槽范例,我希望您能够清楚地了解如何处理它