有一个类,类中有三个数组,想通过c++用imgui实现一个列表,可以动态现实每个数据的内容
时间: 2024-02-09 14:11:36 浏览: 212
好的,您可以使用 ImGui 的 ImGui::ListBox 函数来实现您的需求。下面是一段示例代码:
```c++
// 假设您的类名为 MyClass,包含三个数组 myArray1、myArray2、myArray3
class MyClass {
public:
int myArray1[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
char* myArray2[10] = {"apple", "banana", "cherry", "date", "elderberry", "fig", "grape", "honeydew", "indian", "jujube"};
float myArray3[10] = {1.1f, 2.2f, 3.3f, 4.4f, 5.5f, 6.6f, 7.7f, 8.8f, 9.9f, 10.0f};
};
// 在 ImGui 的渲染循环中
MyClass myObject;
// 准备一个用于存储选中项下标的变量
static int selectedItemIndex = -1;
// 调用 ImGui 的 ListBox 函数
ImGui::ListBoxHeader("My List Box");
for (int i = 0; i < 10; i++) {
// 将 myArray2 数组中的字符串转换成 const char* 类型
const char* str = myObject.myArray2[i];
// 在列表中显示每个数组元素的内容
if (ImGui::Selectable(str, selectedItemIndex == i)) {
selectedItemIndex = i;
// 在这里可以根据选中项的下标 selectedItemIndex,来对应取出 myArray1、myArray2、myArray3 中的相应项
}
}
ImGui::ListBoxFooter();
```
您需要将上述代码放在 ImGui 的渲染循环中,以便 ImGui 能够正确地渲染列表并处理用户的交互操作。同时,您还需要根据自己的实际需求,对代码进行适当的修改和优化。
阅读全文