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

iHo*_*ell 3 c++ imgui

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

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);
Run Code Online (Sandbox Code Playgroud)

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

iHo*_*ell 7

我在 ImGui Discord 频道获得帮助并提出了以下解决方案:

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);
Run Code Online (Sandbox Code Playgroud)