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