首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ImGui列中右对齐文本?

如何在ImGui列中右对齐文本?
EN

Stack Overflow用户
提问于 2019-09-22 07:00:40
回答 2查看 6.3K关注 0票数 6

假设我创建了一个包含以下内容的表:

代码语言:javascript
复制
ImGui::Columns(3);

ImGui::Text("Header 1");
ImGui::NextColumn();
ImGui::Text("Header 2");
ImGui::NextColumn();
ImGui::Text("Header 3");
ImGui::NextColumn();

ImGui::Text("1");
ImGui::NextColumn();
ImGui::Text("2");
ImGui::NextColumn();
ImGui::Text("3");
ImGui::NextColumn();

ImGui::Columns(1);

如何使第二行(1、2和3)中的文本在列中右对齐?我见过CalcItemWidthCalcTextSize,但我搞不懂它们在多列行中是如何工作的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-23 03:25:08

我在ImGui Discord频道得到了帮助,并想出了这个解决方案:

代码语言:javascript
复制
ImGui::NextColumn();
std::string text = "1";
ImGui::SetCursorPosX(ImGui::GetCursorPosX() + ImGui::GetColumnWidth() - ImGui::CalcTextSize(text.c_str()).x 
    - ImGui::GetScrollX() - 2 * ImGui::GetStyle().ItemSpacing.x);
ImGui::Text("%s", text);
票数 9
EN

Stack Overflow用户

发布于 2021-02-09 04:41:29

与iHowell答案几乎相同的代码,但新的x位置应该根据当前位置值进行检查,以便很好地与窗口边界对齐(文本将被右裁剪)。在代码中:

代码语言:javascript
复制
ImGui::NextColumn();
std::string text = "1";
auto posX = (ImGui::GetCursorPosX() + ImGui::GetColumnWidth() - ImGui::CalcTextSize(text.c_str()).x 
    - ImGui::GetScrollX() - 2 * ImGui::GetStyle().ItemSpacing.x);
if(posX > ImGui::GetCursorPosX())
  ImGui::SetCursorPosX(posX);
ImGui::Text("%s", text);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58044749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档