我最近问了这个问题: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 列。现在,它停留在 3 行,偶尔会创建一个我不想要的水平滚动条。我只想要垂直滚动。
所以我需要从上到下水平绘制 xmRowColumnWidgetClass 实例的子级,但我需要它每行最多只能放置 3 个,从而将其限制在一定的宽度内。
我尝试使用 XmNnumColumns 字段,但对更多孩子有用的东西对更少孩子不起作用,反之亦然。有时它变成 4 或 5 列而不是 3 列,有时它变成 2 列,而第 3 列完全为空。即使在尝试使用XmNpacking, XmPACK_TIGHT
而不是XmNpacking, XmPACK_COLUMN
其他东西时,我也遇到了很多这样的问题。
如果有人能够找到 xmRowColumnWidgetClass 的官方文档并链接它,那将不胜感激。
对于熟悉此库的任何人:
如何创建一个水平(逐行)绘制的 xmRowColumnWidgetClass 实例,同时保持一定数量的列?
它应该能够处理任意数量的子节点并根据需要添加尽可能多的行,以便将其保持为 3 列。
该库的另一组示例:
https ://github.com/spartrekus/Motif-C-Examples
https://github.com/spartrekus/Motif-C-Examples/blob/master/rowcol.c