通过Motif工具包,我们可以使用"XmCreateArrowButton“接口创建箭头按钮。
现在,当单击箭头按钮时,该按钮将被选中并保持选中状态。箭头按钮周围绘制了一个黑色边框。
有没有一种方法,当单击箭头按钮时,该按钮被选中,然后变为取消选中。
这里的问题是,如果按钮始终保持选中状态,则它不会响应其他键盘事件(如按ENTER键)。
提前感谢您的帮助。
发布于 2014-03-04 23:53:34
您可能错过了arm和disarm回调。我用老式的方法做这件事,因为我以前从来没有用过XmCreateArrowButton。老式的方式只使用XtVaCreateManagedWidget。它会是这样的
Widget arrow = XtVaCreateManagedWidget("arrow",
xmArrowButtonGadgetClass, container, /* container will be something like a rowcol widget*/
XmNarrowDirection, XmARROW_UP,
NULL);
XtAddCallback(arrow, XmNarmCallback, ouch, 10);
XtAddCallback(arrow, XmNdisarmCallback, ouch, 10);
...
void ouch(Widget w, XtPointer client_data, XtPointer call_data)
{
int value = (int) client_data; /* this will be the 10 passed in */
XmArrowButtonCallbackStruct* cbs = (XmArrowCallbackStruct*) call_data;
switch (cbs->reason)
{
case XmCR_ARM:
/* Pressed */
...
break;
case XmCR_DISARM:
/* released */
...
break;
default:
/* do nothing */
break;
}
}https://stackoverflow.com/questions/22174838
复制相似问题