Motif库的列压缩RowColumn类(C)



我最近问了一个问题:Motif库(C(的水平绘制RowColumn类?

在我之前的问题中,我在让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

XmRowColumn被设计用于实现顶部菜单栏和所有其他菜单类。。。您正在搜索一个类似网格的小部件,因此必须使用XmForm阅读相关问题。

简而言之:尝试WtTable小部件

详细解释如下:

CCD_ 6关于";列";成为";行";当你选择水平配置是非常不幸的。为此,使用XmForm而不是XmRowColumn的替代方案是可行的,但它需要手动设置子约束,即使这样,也很可能无法实现XmRowColumn中实现的自动调整大小。

通过今天的搜索,我找到了WtTable小部件,它对我的目的很好。它是"几乎";与CCD_ 10一样自动,并且不需要手动设置任何约束。我在我的Motif代码中尝试过,效果很好。

然而,请注意,我说";几乎";作为自动。";几乎";是因为您需要指定列和行的数量,并且需要为每个子小部件指定列和列。然而,所有这些都可以自动化:您可以创建一个方便的函数,在内部管理列和行的计数器,这样您就可以将一个小部件传递给该函数,它会自动将其放入所属的单元格中:您甚至可以在需要时使该函数在WtTable中创建一个新行。

相关内容

  • 没有找到相关文章

最新更新