我试图创建的gui遵循这个简单的逻辑:
列表应该填充拆分,并在需要时使用滚动条。这是有效的,但是,如果我稍微调整窗口大小, 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);
答案 0 :(得分:0)
仅当列表包含许多项目或项目非常大时才会发生。
问题是默认情况下列表的自然大小会考虑其所有项目。所以它大于对话框的实际大小,即使在分割中使用expand = yes也是如此。这是一种历史性行为,无法改变。
为避免我们有两个属性:VISIBLECOLUMNS和VISIBLELINES,设置时将禁用自然大小的此行为。例如:
IupSetAttribute(list_entries," VISIBLECOLUMNS"," 10"); IupSetAttribute(list_entries," VISIBLELINES"," 3");
然后你的样本应该按预期工作。