Skip to page content

弹出代理

QPopupProxy 应该用于当您需要在较大屏幕上显示 QMenu 或在较小屏幕上显示 QDialog 时。它充当一个代理,可以选择使用这两个组件中的任何一个。QPopupProxy 还可以处理上下文菜单。

QPopupProxy API

用法

TIP

使用浏览器的开发工具在移动设备或桌面设备之间切换(每次更改后刷新浏览器),或者在实际点击/触摸其容器之前,调整浏览器窗口的大小,以观察 QPopupProxy 组件在 QMenu 或 QDialog 之间切换。默认断点设置为 450px。

标准

标准



上下文菜单

断点

在下面的示例中,点击输入框中的图标。

透传属性

请记住,QMenuQDialog 的所有属性都通过此组件传递。因此,像 offsettransition-show 这样的属性可以与 QPopupProxy 一起使用。

WARNING

QPopupProxy 将某些组件(QDateQTimeQCarouselQColor)视为特殊组件,并强制设置 cover: truemaxHeight: '99vh'。如果您不希望这种行为,只需将 div 作为 QPopupProxy 的第一级子元素。

无障碍访问
v2.25+

QPopupProxy 自身没有语义——它暴露的是当前渲染的组件所提供的内容。在断点以下是 QDialog(role="dialog" 配合受管理的 aria-modal),在断点以上是 QMenu(一个刻意不声明 ARIA role 的定位容器)。各模式的播报方式及键盘交互和焦点处理,分别参见 QDialog 的无障碍访问章节QMenu 的无障碍访问章节

WARNING

与 props 一样,属性会穿透到当前激活的组件上——这也包括 role。一个你为菜单模式准备的 role(例如 role="menu")在断点以下会落到 QDialog 上并替换其 role="dialog"。如果需要声明 role,请将其放在弹出内容内部的元素上(如包裹的 QList)而非 QPopupProxy 本身。