Вопрос C++ Imgui как сделать табы?

Imgui Seller
Пользователь
Статус
Оффлайн
Регистрация
26 Авг 2023
Сообщения
475
Реакции[?]
48
Поинты[?]
47K
хочу сделать такие, шрифт в байтах уже готов, просто не писал никогда свои табы, может есть у кого пример похожих, которым вы можете поделиться?
1741427100976.png
 
НЕКАСЕСТВЕНЫЙ КАД
Участник
Статус
Оффлайн
Регистрация
27 Фев 2019
Сообщения
1,456
Реакции[?]
263
Поинты[?]
11K
создаешь invisibleButton(как то так) и поверх иконку
 
Imgui Seller
Пользователь
Статус
Оффлайн
Регистрация
26 Авг 2023
Сообщения
475
Реакции[?]
48
Поинты[?]
47K

Вложения

Начинающий
Статус
Оффлайн
Регистрация
12 Дек 2022
Сообщения
85
Реакции[?]
11
Поинты[?]
13K
Скрытое содержимое

как будто не слишком правильный метод, вроде все пишут кастомную функцию tab и ее используют
блять ну так напиши ее, че спрашиваешь тогда
 
НЕКАСЕСТВЕНЫЙ КАД
Участник
Статус
Оффлайн
Регистрация
27 Фев 2019
Сообщения
1,456
Реакции[?]
263
Поинты[?]
11K
Скрытое содержимое

как будто не слишком правильный метод, вроде все пишут кастомную функцию tab и ее используют
я те самое простое написал, не сильно в имгуи шарю
 
Imgui Seller
Пользователь
Статус
Оффлайн
Регистрация
26 Авг 2023
Сообщения
475
Реакции[?]
48
Поинты[?]
47K
Пользователь
Статус
Оффлайн
Регистрация
28 Апр 2018
Сообщения
590
Реакции[?]
133
Поинты[?]
6K
Я тоже не особо шарю в табах, сделал через кнопки, чайлды, группы
C++:
enum eTabs {
    OpenCV,
    Memory,
    Record,
    Settings,
    Config
};
C++:
    static int iTab = 0;
    const char* szTab[] = { "OpenCV", u8"Память", u8"Запись", u8"Настройки", u8"Конфиг" };
    ImGui::BeginGroup();
    ImGui::BeginChild("##Tabs", { 100, 410 }, true, window);
    {
        if (ImGui::Button(szTab[OpenCV], ImVec2(85, 50))) iTab = OpenCV;
        if (ImGui::Button(szTab[Memory], ImVec2(85, 50))) iTab = Memory;
        if (ImGui::Button(szTab[Record], ImVec2(85, 50))) iTab = Record;
           if (ImGui::Button(szTab[Settings], ImVec2(85, 50))) iTab = Settings;
        if (ImGui::Button(szTab[Config], ImVec2(85, 50))) iTab = Config;

        ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 75);
        if (ImGui::Button(u8"Выход##Button", ImVec2(85, 50)))
            ImGui::OpenPopup(u8"Выход##Popup");
       
        ImGui::SetNextWindowPos(center, ImGuiCond_Appearing, ImVec2(0.5f, 0.5f));
        if (ImGui::BeginPopupModal(u8"Выход##Popup", NULL, modual | ImGuiWindowFlags_NoMove))
        {
            ImGui::Text(u8"Выключаемся?");
            ImGui::Spacing();
               ImGui::Separator();
            ImGui::Spacing();
            if (ImGui::Button(u8"Да", { 120, 30 })) {
                m_shutdown = true;
            }

            ImGui::SameLine();

            if (ImGui::Button(u8"Нет", { 120, 30 })) ImGui::CloseCurrentPopup();
                ImGui::EndPopup();
        }
        ImGui::EndChild();
    }
    ImGui::EndGroup();
C++:
ImGui::BeginGroup();
ImGui::BeginChild("##Main", { 400, 410 }, true, window | ImGuiWindowFlags_MenuBar);
{
    if (ImGui::BeginMenuBar()) ImGui::TextUnformatted(szTab[iTab]), ImGui::EndMenuBar();
    if (iTab == OpenCV) {

    }
    else if (iTab == Memory) {

    }
    else if (iTab == Record) {
       
    }

    else if (iTab == Settings) {
       
    }

    else if (iTab == Config) {
       
    }

    ImGui::EndChild();
}

ImGui::EndGroup();
 
Сверху Снизу