QPopupEdit组件可用于“就地”编辑值,例如QTable中的单元格。 默认情况下,单元格显示为字符串,然后,如果您使用的是QPopupEdit,并且用户单击/轻击表格单元格,则会打开一个弹出窗口,用户可以在其中使用文本字段编辑值。
此组件将QMenu注入其父DOM元素,并启用上述行为,因此可以在任何地方使用它,不仅可以在QTable中使用。
QPopupEdit API
用法
WARNING
如果在QTable上使用,则QPopupEdit不适用于单元格范围的插槽。
Standalone
使用QTable
单击单元格以查看弹出编辑器。“Name”列演示了title
属性。“Calories”列显示数值用法。“Fat”列还演示了“disable”属性。如果你查看源代码,你会看到“fat”的单元格正在使用QPopupEdit,但是当点击单元格时,弹出窗口没有显示。
TIP
还有一个title
插槽,您可以使用它插入自己的标题,如“Calcium”列所示。
自定义
持久且带有按钮
您还可以使用buttons
属性添加两个按钮:“Cancel"和"Set”(默认标签)。 这些按钮有助于控制用户的输入。 除了buttons
属性之外,您还拥有persistent
属性,该属性拒绝用户使用退出键关闭弹出窗口或在弹出窗口外部单击/轻击。 persistent
属性在“carbs”栏中显示。 最后,您可以使用label-set
和label-cancel
属性来控制两个按钮的标签,如“Protein”列中所示。 注意,“Save"代替"Set”,而"Close"代替"Cancel"。
默认作用域插槽
默认的插槽参数是:
{ initialValue, value, validate, set, cancel, updatePosition, emitValue }
WARNING
不要破坏插槽的参数,因为当直接将“value”属性与“v-model”一起使用时,它会生成linting错误。
Textarea / QEditor
由于QPopupEdit包裹了QInput,因此您基本上可以使用任何类型的QInput。 例如,您还可以使用下面的“Comments”列中所示的文本区域。
TIP
当使用多行控件(textarea、QEditor)进行输入时,您还需要在组件上使用@keyup.enter.stop
,以阻止回车键关闭弹出窗口。 您还需要添加按钮来控制弹出窗口。
验证方式
QPopupEdit还允许对输入进行简单验证。 要使用它,您需要以箭头函数的形式为其提供回调函数,并且该函数应返回布尔值。 (value) => Boolean
。 在下面的 “Protein”列中展示。
提示1
注意,我们正在使用hide
事件来重新验证输入。 如果我们不这样做,则QInput的error属性将“挂起”, 处于无效状态。
提示2
在此示例中,我们正在使用QInput的外部错误处理。 我们还可以使用QInput的validation属性并将值发送给QPopupEdit的validation属性。当也使用Vuelidate时,可以实现相同的概念。 换句话说,赋予QPopupEdit的validate函数的值可以来自任何地方。