我想为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
)
那似乎什么也没做。指定事件处理程序时,我做错什么了吗?
答案 0 :(得分:2)
我认为您遇到问题的地方是,单击复选框会创建更改事件,而单击数据单元会生成mbldown事件。如果将这些事件处理程序放入其中,则会弹出带有相应单元格名称的消息框。
table_pac_change=: 3 : 0
wdinfo ":pac_cell
)
table_pac_mbldown=: 3 : 0
wdinfo ":pac
)
这表示您的事件已正确触发。那时您选择做什么取决于您。 showevents表的sysevents行非常有用,可以查看触发了哪些事件以及随后需要编写哪些处理程序。
希望这会有所帮助。