QPopupProxy 应该用于当您需要在较大屏幕上显示 QMenu 或在较小屏幕上显示 QDialog 时。它充当一个代理,可以选择使用这两个组件中的任何一个。QPopupProxy 还可以处理上下文菜单。
QPopupProxy API
用法
使用浏览器的开发工具在移动设备或桌面设备之间切换(每次更改后刷新浏览器),或者在实际点击/触摸其容器之前,调整浏览器窗口的大小,以观察 QPopupProxy 组件在 QMenu 或 QDialog 之间切换。默认断点设置为 450px。
标准
上下文菜单
断点
在下面的示例中,点击输入框中的图标。
透传属性
请记住,QMenu 和 QDialog 的所有属性都通过此组件传递。因此,像 offset 或 transition-show 这样的属性可以与 QPopupProxy 一起使用。
QPopupProxy 将某些组件(QDate、QTime、QCarousel 和 QColor)视为特殊组件,并强制设置 cover: true 和 maxHeight: '99vh'。如果您不希望这种行为,只需将 div 作为 QPopupProxy 的第一级子元素。
无障碍访问 v2.25+
QPopupProxy 自身没有语义——它暴露的是当前渲染的组件所提供的内容。在断点以下是 QDialog(role="dialog" 配合受管理的 aria-modal),在断点以上是 QMenu(一个刻意不声明 ARIA role 的定位容器)。各模式的播报方式及键盘交互和焦点处理,分别参见 QDialog 的无障碍访问章节 和 QMenu 的无障碍访问章节。
与 props 一样,属性会穿透到当前激活的组件上——这也包括 role。一个你为菜单模式准备的 role(例如 role="menu")在断点以下会落到 QDialog 上并替换其 role="dialog"。如果需要声明 role,请将其放在弹出内容内部的元素上(如包裹的 QList)而非 QPopupProxy 本身。