wh1teend nixware.cc Участник Статус Оффлайн Регистрация 26 Янв 2017 Сообщения 547 Реакции[?] 225 Поинты[?] 0 31 Янв 2018 Автор темы #1 Как сделать такой лист на имгуи? Спойлер: Скрин
xardch Пользователь Статус Оффлайн Регистрация 3 Авг 2016 Сообщения 186 Реакции[?] 252 Поинты[?] 0 31 Янв 2018 #2 const char* listbox_items[] = { "Apple", "Banana", "Cherry" }; static int listbox_item_current = 1; ImGui::ListBox("listbox", &listbox_item_current, listbox_items, IM_ARRAYSIZE(listbox_items), 4);
const char* listbox_items[] = { "Apple", "Banana", "Cherry" }; static int listbox_item_current = 1; ImGui::ListBox("listbox", &listbox_item_current, listbox_items, IM_ARRAYSIZE(listbox_items), 4);
wh1teend nixware.cc Участник Статус Оффлайн Регистрация 26 Янв 2017 Сообщения 547 Реакции[?] 225 Поинты[?] 0 31 Янв 2018 Автор темы #3 А есть альтернативы? xardch написал(а): const char* listbox_items[] = { "Apple", "Banana", "Cherry" }; static int listbox_item_current = 1; ImGui::ListBox("listbox", &listbox_item_current, listbox_items, IM_ARRAYSIZE(listbox_items), 4); Нажмите для раскрытия...
А есть альтернативы? xardch написал(а): const char* listbox_items[] = { "Apple", "Banana", "Cherry" }; static int listbox_item_current = 1; ImGui::ListBox("listbox", &listbox_item_current, listbox_items, IM_ARRAYSIZE(listbox_items), 4); Нажмите для раскрытия...
wh1teend nixware.cc Участник Статус Оффлайн Регистрация 26 Янв 2017 Сообщения 547 Реакции[?] 225 Поинты[?] 0 1 Фев 2018 Автор темы #4 KiriKiribasara написал(а): А есть альтернативы? Нажмите для раскрытия... Просто мне нужно туда конфиги засунуть
KiriKiribasara написал(а): А есть альтернативы? Нажмите для раскрытия... Просто мне нужно туда конфиги засунуть
Крайслер Эксперт Статус Оффлайн Регистрация 12 Июн 2014 Сообщения 999 Реакции[?] 1,209 Поинты[?] 3K 1 Фев 2018 #5 KiriKiribasara написал(а): Просто мне нужно туда конфиги засунуть Нажмите для раскрытия... все просто: добавляем своеобразный callback Код: static auto vector_getter = [](void* vec, int idx, const char** out_text) { auto& vector = *static_cast<std::vector<std::string>*>(vec); if (idx < 0 || idx >= static_cast<int>(vector.size())) { return false; } *out_text = vector.at(idx).c_str(); return true; }; обернем все: Код: bool ListBox(const char* label, int* currIndex, std::vector<std::string>& values) { if (values.empty()) return false; return ImGui::ListBox(label, currIndex, vector_getter,static_cast<void*>(&values), values.size()); } теперь помещаем список файлов в контейнер(пример показан тут: https://yougame.biz/threads/33147/) и отрисовываем все в ListBox Код: static int SelectedValue = 0; ListBox("Cfg list",&SelectedValue,vNameFileList); все)) теперь просто вызываешь выбранный тобой фаил: Код: путь_к_папке_с_cfg + vNameFileList[SelectedValue].c_str();
KiriKiribasara написал(а): Просто мне нужно туда конфиги засунуть Нажмите для раскрытия... все просто: добавляем своеобразный callback Код: static auto vector_getter = [](void* vec, int idx, const char** out_text) { auto& vector = *static_cast<std::vector<std::string>*>(vec); if (idx < 0 || idx >= static_cast<int>(vector.size())) { return false; } *out_text = vector.at(idx).c_str(); return true; }; обернем все: Код: bool ListBox(const char* label, int* currIndex, std::vector<std::string>& values) { if (values.empty()) return false; return ImGui::ListBox(label, currIndex, vector_getter,static_cast<void*>(&values), values.size()); } теперь помещаем список файлов в контейнер(пример показан тут: https://yougame.biz/threads/33147/) и отрисовываем все в ListBox Код: static int SelectedValue = 0; ListBox("Cfg list",&SelectedValue,vNameFileList); все)) теперь просто вызываешь выбранный тобой фаил: Код: путь_к_папке_с_cfg + vNameFileList[SelectedValue].c_str();