EDynamicDialog 动态弹窗
示例与代码
动态创建内容
传入参数
结果回调
取消与关闭
重复打开与销毁
属性
contentalias内容插槽;直接在组件内部声明 QML 子对象。
dialogContent.datatextstring显示的文字内容。
未设置topreal对话框顶部位置,单位为像素;非垂直居中时生效。
0openDelayint等待、节流或自动关闭时间,单位为毫秒;0 表示不延迟或不启用定时关闭。
0closeDelayint等待、节流或自动关闭时间,单位为毫秒;0 表示不延迟或不启用定时关闭。
0centerbool是否采用居中布局或居中文字。
falseautofocusbool组件显示时自动聚焦;受控件可用状态及弹层生命周期影响。
truedialogRadiusreal圆角半径,单位为像素。
8showClosebool是否显示关闭或删除按钮。
truebeforeClosevar关闭前回调;弹窗通过 done(cancel) 完成异步判断。
nullexitDurationint动画或显示持续时间,单位为毫秒;组件的绑定表达式给出实际用途。
180showHeaderbool是否显示头部区域。
truewindowMarginreal对话框与窗口边缘的最小间距,单位为像素。
16enterDurationint动画或显示持续时间,单位为毫秒;组件的绑定表达式给出实际用途。
220fullscreenbool是否使用全屏显示或全窗口覆盖。
falsecloseOnEscapebool是否允许按 Escape 关闭。
truedestroyOnClosebool关闭后销毁通过 Component 加载的内容。
truecloseIconint组件使用的图标。
EIcons.*
0(无图标)
EIcons.XMARKmodalPenetrablebool是否允许输入穿透非模态遮罩。
falseshowCancelButtonbool是否显示取消按钮。
trueshowConfirmButtonbool是否显示确认按钮。
truecloseOnClickOutsidebool点击弹层外部时关闭。
truecontentComponentComponent自定义主体内容的 Component 插槽;null 使用默认内容。 委托上下文见本页示例。
展开默认值
Item { id: content property var item: null function create() { if (item) { item.destroy() item = null } if (!control.component) return const properties = {} Object.keys(control.parameters || {}).forEach(function(key) { properties[key] = control.parameters[key] }) item = control.component.createObject(content, properties) if (!item) { control.loadFailed("component-creation-failed") return } if ("dialogRef" in item) item.dialogRef = control item.width = Qt.binding(function() { return content.width }) } implicitHeight: item ? Math.max(item.implicitHeight || 0, item.height || 0) : 0 Component.onCompleted: create() Connections { function onComponentChanged() { content.create() } function onParametersChanged() { content.create() } target: control } }confirmStyleTypeint语义配色风格。
EStyle.DefaultEStyle.PrimaryEStyle.SuccessEStyle.InfoEStyle.WarningEStyle.Danger
EStyle.PrimarymodalOverlayColorcolor模态或非模态遮罩颜色。
EPaletteManager.BasePalette.modalOverlaytextColorcolor文字颜色。
EPaletteManager.ThemePalette.textRegular(ETheme.dark)modelessOverlayColorcolor模态或非模态遮罩颜色。
EPaletteManager.BasePalette.modelessOverlaytitleColorcolor标题颜色。
EPaletteManager.ThemePalette.textPrimary(ETheme.dark)borderColorcolor边框颜色。
EPaletteManager.ThemePalette.borderDefault(ETheme.dark)cancelTextstring取消按钮文字。
EControlConfig.textFor(control, "Cancel2", ELocale.texts)overflowbool是否允许对话框拖动超出窗口范围。
EControlConfig.optionFor(control, "dialog", "overflow", false)confirmTextstring确认按钮文字。
EControlConfig.textFor(control, "Confirm2", ELocale.texts)draggablebool允许通过拖拽移动条目。
EControlConfig.optionFor(control, "dialog", "draggable", false)backgroundColorcolor背景颜色。
EPaletteManager.ThemePalette.surfaceComponent(ETheme.dark)alignCenterbool是否采用居中布局或居中文字。
EControlConfig.optionFor(control, "dialog", "alignCenter", true)loadedContentalias只读通过 Component 创建的实际内容对象。
contentLoader.itemmaximumDialogWidthreal只读扣除窗口边距后的对话框最大宽度。
展开默认值
Overlay.overlay && Overlay.overlay.width > 0 ? Overlay.overlay.width - windowMargin * 2 : implicitWidthcallbackvar完成回调 callback(result, accepted)。
nullparametersvar动态内容创建时注入的初始属性。
({})componentComponent需要动态创建的 QML Component。
nullresultDatavar动态弹窗通过 resolve(value) 返回的数据。
undefinedinstancevar只读已创建的动态内容实例,未创建时为 null。
loadedContent ? loadedContent.item : null信号
closeRejected()关闭请求被 beforeClose 拒绝时触发。
openAutoFocused()弹窗打开并完成自动聚焦时触发。
closeAutoFocused()弹窗关闭并完成焦点恢复时触发。
loadFailed(string message)加载数据失败时触发,message 为失败原因。
finished(var result, bool accepted)动态对话框结束时触发,result 为返回数据,accepted 表示是否确认。
方法
close()关闭组件的面板或弹窗。
open()打开组件的面板或弹窗。
resetPosition()将对话框恢复到初始位置。
requestClose()请求关闭弹窗,并执行 beforeClose 检查。
resolve(value)确认动态对话框,并将 value 作为返回结果。
finish(accepted)结束动态对话框,accepted 表示确认或取消。
openComponent(source, properties)加载并显示 source 对应的对话框内容,properties 为初始属性。