最近在使用imgui时遇到Combo太宽导致界面不紧凑的情况,所以研究了下code,找到如下两个接口可用于调整Combo宽度:
void ImGui::SetNextItemWidth(float item_width)
void ImGui::PushItemWidth(float item_width)
使用方式是在draw Combo及其他如InputInt等需要调整宽度的接口之前调用 SetNextItemWidth 接口,在最后决定不再使用“自定义”宽度时,调用 PushItemWidth 接口
示例代码:
{
// ...
ImGui::Begin("Another Window", &show_another_window);
ImGui::SetNextItemWidth(100);
static int input_v;
InputIntWithRange(" ", &input_v, 1, 1, 20);
ImGui::Text("input int:%d", input_v);
ImGui::Text("%s%s", "combo selsect","(cm)");
ImGui::SameLine();
const char* items[] = { "AAAA", "BBBB", "CCCC", "DDDD", "EEEE", "FFFF", "GGGG", "HHHH", "IIIIIII", "JJJJ", "KKKKKKK" };
static int item_current = 0;
ImGui::SetNextItemWidth(100);
ImGui::Combo(" ", &item_current, items, IM_ARRAYSIZE(items));
ImGui::PushItemWidth(100);
ImGui::Text("combo select:%d", item_current);
ImGui::End();
}
效果如下:
添加宽度设定前:
添加宽度设定后: