1

我试图创建的 gui 遵循这个简单的逻辑:

  • IupDialog:
    • IupVbox
      • IupSplit
        • 列表
        • 列表

列表应该填充拆分,并在需要时具有滚动条。这是可行的,但是,如果我稍微调整窗口大小,IupVbox就会变得太大以至于不适合对话框,并且您看不到它的边距或列表的滚动条。我可能做错了什么,但我无法弄清楚。

这是我正在做的简化版本:

Ihandle *page, *box_options, *split, *btn_work, *dlg;
{
    list_entries = IupList(NULL);
    IupSetAttribute(list_entries, "EXPAND", "YES");
}
{
    list_log = IupList (NULL);
    IupSetAttribute(list_log, "EXPAND", "YES");
}

split = IupSplit(list_entries, list_log);
IupSetAttribute(split, "ORIENTATION", "VERTICAL");

page = IupVbox(split, NULL);
IupSetAttribute(page, "GAP", "20");
dlg = IupDialog(page);
IupShowXY (dlg, IUP_CENTER, IUP_CENTER);
4

1 回答 1

0

仅当列表有很多项目或项目非常大时才会发生。

问题是默认情况下列表的自然大小会考虑其所有项目。因此它大于对话框的实际大小,即使使用 expand=yes 并在拆分内也是如此。这是一种历史行为,无法改变。

为了避免这种情况,我们有两个属性:VISIBLECOLUMNS 和 VISIBLELINES,当设置时将禁用自然大小的这种行为。例如:

IupSetAttribute(list_entries, "VISIBLECOLUMNS", "10"); IupSetAttribute(list_entries, "VISIBLELINES", "3");

然后您的样本应该可以按预期工作。

于 2017-10-30T16:34:35.183 回答