QT开发中文网

实现一个ImGui::BeginCombo()用法的完整代码示例

下面是一个使用Dear ImGui库的ImGui::BeginCombo()函数的完整代码示例:

#include <imgui.h>
#include <imgui_impl_glfw.h>
#include <imgui_impl_opengl3.h>

int main()
{
    // 初始化GLFW窗口和OpenGL上下文
    glfwInit();
    GLFWwindow* window = glfwCreateWindow(800, 600, "ImGui BeginCombo示例", nullptr, nullptr);
    glfwMakeContextCurrent(window);
    
    // 初始化Dear ImGui
    IMGUI_CHECKVERSION();
    ImGui::CreateContext();
    ImGuiIO& io = ImGui::GetIO(); (void)io;
    
    // 配置Dear ImGui为在OpenGL3上渲染
    ImGui_ImplGlfw_InitForOpenGL(window, true);
    ImGui_ImplOpenGL3_Init("#version 330");
    
    // 设置样式
    ImGui::StyleColorsDark();
    
    while (!glfwWindowShouldClose(window))
    {
        glfwPollEvents();

        // 开始新的帧,并开始创建GUI元素
        ImGui_ImplOpenGL3_NewFrame();
        ImGui_ImplGlfw_NewFrame();
        ImGui::NewFrame();

        // 创建一个具有下拉选项的Combo Box
        static const char* items[] = { "选项1", "选项2", "选项3" };
        static int currentItem = 0;
        
        if (ImGui::Begin("示例窗口"))
        {
            if (ImGui::BeginCombo("下拉框", items[currentItem]))
            {
                for (int i = 0; i < IM_ARRAYSIZE(items); i++)
                {
                    bool isSelected = (currentItem == i);
                    if (ImGui::Selectable(items[i], isSelected))
                        currentItem = i;

                    if (isSelected)
                        ImGui::SetItemDefaultFocus();
                }
                ImGui::EndCombo();
            }
        }
        ImGui::End();

        // 渲染GUI
        glClearColor(0.45f, 0.55f, 0.60f, 1.00f);
        glClear(GL_COLOR_BUFFER_BIT);
        ImGui::Render();
        ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());

        glfwSwapBuffers(window);
    }

    // 清理Dear ImGui和GLFW资源
    ImGui_ImplOpenGL3_Shutdown();
    ImGui_ImplGlfw_Shutdown();
    ImGui::DestroyContext();

    glfwDestroyWindow(window);
    glfwTerminate();

    return 0;
}

请确保你已经正确安装并链接了Dear ImGui库,以及相关的GLFW和OpenGL库。此示例演示了如何使用ImGui::BeginCombo()函数创建一个具有下拉选项的Combo Box,并处理选择事件。你可以根据自己的需求进行修改和扩展。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=8842

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?