在表中指定按钮/复选框的正确语法

时间:2018-06-27 22:46:43

标签: j

我想为QTableWidget中的按钮/复选框创建事件处理程序。 下面,我复制并粘贴了表演示源代码以供参考:

NB. =========================================================
fmt1=: 3 : 0
if. 2=3!:0 y do. ' "',y,'"' else. ' ',,8!:2 y end.
)

NB. =========================================================
Tab=: _2 [\ 11 8 6 9 23 6
Sel=: 0 0 1

NB. =========================================================
makedata=: 3 : 0
t=. <&>t,+/t=. Tab,.+/"1 Tab
dat=. ((<&>Sel),<''),.t,.;:'USA Japan Germany All'
;fmt1 each ,dat
)

NB. =========================================================
table=: 3 : 0
wd 'pc table'
wd 'cc pac table 4 5'
wd 'set pac hdr Select Hire Lease Total Origin'
wd 'set pac hdralign 1 1 1 1 0'
wd 'set pac type ',":20{.15$100 0 0 0 0
wd 'set pac align 1 2 2 2 0'
wd 'set pac protect ',":20{.(!.1) 15$0 0 0 1 1
wd 'set pac lab Ford Toyota "Mercedes Benz" Total'
wd 'set pac data *',makedata''
wd 'pmove 100 10 500 200'
wd 'pshow'
)

NB. =========================================================
table_pac_change=: 3 : 0
'row col'=. 0 ". pac_cell
new=. 0 ". pac
if. col=0 do.
  Sel=: new row} Sel
else.
  Tab=: new (<row,col-1)} Tab
  wd 'set pac data *',makedata''
end.
)

NB. =========================================================
table_close=: 3 : 0
wd 'pclose'
showevents_jqtide_ 0
)

NB. =========================================================
showevents_jqtide_ 2
table''

我希望能够将事件处理程序添加到“选择”列下以及“丰田”行中的复选框。从在线文档中,我知道为复选框指定事件处理程序的正确方法是“ formname_childname_checkbox”。

但是,从未给出该复选框的子名称;即使用以下方法批量生成复选框:

wd 'set pac type 100'

我尝试使用以下复选框来指定特定的单元格:

wd 'set pac block 1 1'
table_pac_checkbox = 3 : 0
NB. code here
)

那似乎什么也没做。指定事件处理程序时,我做错什么了吗?

1 个答案:

答案 0 :(得分:2)

我认为您遇到问题的地方是,单击复选框会创建更改事件,而单击数据单元会生成mbldown事件。如果将这些事件处理程序放入其中,则会弹出带有相应单元格名称的消息框。

table_pac_change=: 3 : 0
  wdinfo  ":pac_cell
)
table_pac_mbldown=: 3 : 0
  wdinfo  ":pac
)

这表示您的事件已正确触发。那时您选择做什么取决于您。 showevents表的sysevents行非常有用,可以查看触发了哪些事件以及随后需要编写哪些处理程序。

希望这会有所帮助。