QML Popup详解

本文介绍了Qt编程中Popup控件的用法,包括其不可见性、closePolicy属性(如NoAutoClose,CloseOnPressOutside等)以及模态设定(modal)。此外,还展示了如何通过设置动画实现Popup的动态打开和关闭效果。同时提到了Overlay的使用,例如modal和modeless模式。
摘要由CSDN通过智能技术生成

1.简介

弹出式用户界面控件,它可以与Window或ApplicationWindow一起使用,默认不可见。

常用属性介绍,一些公用的基础属性就不作介绍,可以查看我前面写的文章。

closePolicy : enumeration :此属性决定弹出窗口关闭的情况

  • Popup.NoAutoClose: Popup 只会在手动指示时关闭。
  • Popup.CloseOnPressOutside:当鼠标在其外部按下时, Popup 将关闭。
  • Popup.CloseOnPressOutsideParent:当鼠标在其父级之外按下时, Popup 将关闭。
  • Popup.CloseOnReleaseOutside:当鼠标离开 Popup 时, Popup 将关闭。
  • Popup.CloseOnReleaseOutsideParent:当鼠标在其父级之外释放时, Popup 将关闭。
  • Popup.CloseOnEscape:当 Popup 具有活动焦点时按下退出键, Popup 将关闭。

modal : bool:确定弹出窗口是否是模态的

dim : bool:显示弹出窗口是否使背景变暗

Overlay:弹出窗口覆盖

下图就是一些内边距、外边距等的一些属性。

常用方法:

  • void close():关闭弹窗
  • void open() :打开弹窗

2.示例

示例1:打开一个模态框,按ESC键关闭。

Window {
    visible: true
    width: 700
    height: 700
    title: qsTr("Hello World")


    Button {
        text: "Open"
        onClicked: popup.open()
    }

    Popup {
        id: popup
        x: 100
        y: 100
        width: 200
        height: 300
        modal: true
        focus: true
        closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent
    }
}

示例2:带动画的打开关闭popup

Window {
    visible: true
    width: 700
    height: 700
    title: qsTr("Hello World")

    Button {
        text: "Open"
        onClicked: popup.open()
    }

    Popup {
        id: popup
        x: 100
        y: 100
        width: 200
        height: 300
        modal: true
        focus: true
        closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent

        enter: Transition {
            NumberAnimation {
                property: "opacity"
                from: 0.0
                to: 1.0
                duration: 2000
            }
        }
        exit: Transition {
            NumberAnimation {
                property: "opacity"
                from: 1.0
                to: 0.0
                duration: 2000
            }
        }
    }
}

示例3:Overlay的简单使用

Overlay.modal 要生效,使用modal:true

Overlay.modeless要生效,使用modal:false 并且置dim:true

Window {
    visible: true
    width: 700
    height: 700
    title: qsTr("Hello World")

    Popup {
        id: popup
        x: 100
        y: 100
        visible: true
        width: 200
        height: 300
        modal: false
        focus: true
        //dim:true
        closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent

        //modal设置了除模态对话框以外的区域
        Overlay.modal: Rectangle{
            anchors.fill: parent
            color: "red"
        }

        //modal设置了除非模态对话框以外的区域,要设置dim:true才可以
        Overlay.modeless: Rectangle{
            anchors.fill: parent
            color: "green"
        }
    }
}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灬Sunnnnn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值