我最近问了这个问题:Horizontally-Drawn RowColumn Class for Motif Library (C)?
在上一个问题中,我无法让xmRowColumnWidgetClass垂直(逐行)绘制而不是垂直(逐列)绘制。在玩完它之后,找出了如何使用以下代码片段切换到水平绘图:
XmNorientation, XmHORIZONTAL,
所以创建xmRowColumnWidgetClass实例的代码现在看起来像这样:
rowColumn = XtVaCreateManagedWidget("rowcolumn",
xmRowColumnWidgetClass,
parentWidget,
XmNnumColumns, 3,
XmNorientation, XmHORIZONTAL,
XmNpacking, XmPACK_COLUMN,
XmNspacing, 6,
NULL);
但是,我的新问题是,由于某种原因,XmNnumColumns字段现在引用的是行数,而不是实际的列数。在添加XmNorientation, XmHORIZONTAL
部分之前,xmRowColumnWidgetClass实例从左到右绘制对象,但是它像预期的那样停留在3列中。现在,它停留在三行,偶尔会创建一个我不需要的水平滚动条。我只想要垂直滚动。
因此,我需要从上到下水平绘制xmRowColumnWidgetClass实例的子级,但是我只需要每行最多放置3个,从而将其限制在一定的宽度内。
我曾尝试使用XmNnumColumns字段,但对于更多孩子而言,适用于较少孩子的事情并不能为更少孩子使用,反之亦然。有时它使它变成4或5列而不是3列,有时使它变成2列而第3列完全为空。即使尝试使用XmNpacking, XmPACK_TIGHT
而不是XmNpacking, XmPACK_COLUMN
和其他内容,我也遇到了很多类似的问题。
如果有人能够找到xmRowColumnWidgetClass的正式文档并将其链接,将不胜感激。
致熟悉此库的任何人:
它应该能够处理任意数量的子代,并根据需要添加任意多的行,以使其精确地保持为3列。
[该库的另一组示例:https://github.com/spartrekus/Motif-C-Exampleshttps://github.com/spartrekus/Motif-C-Examples/blob/master/rowcol.c
[XmRowColumn
旨在实现顶部菜单栏和所有其他菜单类...您正在搜索类似小部件的网格,因此必须使用XmForm
阅读the related question for that.