imgui 表格

static ImVector<int> selection;
static void ShowDemoWindowTables2(){
	static ImGuiTableFlags flags =
		ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable
		| ImGuiTableFlags_Sortable | ImGuiTableFlags_SortMulti
		| ImGuiTableFlags_RowBg | ImGuiTableFlags_Borders |ImGuiTableFlags_BordersInnerH//|ImGuiTableFlags_NoBordersInBody
		| ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY| ImGuiTableFlags_NoHostExtendX
		| ImGuiTableFlags_SizingFixedFit;
	static ImVec2 outer_size_value = ImVec2(0.0f, 16 * 12);//限制表宽高
	if (ImGui::BeginTable("table_advanced", 6, flags)) {//, outer_size_value)) {
        ImGui::SetWindowFontScale(1.2);
        //ImGuiTableColumnFlags_DefaultSort 排序角标 ImGuiTableColumnFlags_NoSort 去排序角标
		ImGui::TableSetupColumn("ID", ImGuiTableColumnFlags_None | ImGuiTableColumnFlags_NoSort | ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_NoHide, 0.0f, 0);
		ImGui::TableSetupColumn("Name", ImGuiTableColumnFlags_None | ImGuiTableColumnFlags_NoSort | ImGuiTableColumnFlags_WidthFixed, 0.0f, 1);
		ImGui::TableSetupColumn("Action", ImGuiTableColumnFlags_None | ImGuiTableColumnFlags_NoSort | ImGuiTableColumnFlags_WidthFixed, 0.0f, 2);
		ImGui::TableSetupColumn("Quantity", ImGuiTableColumnFlags_None | ImGuiTableColumnFlags_NoSort | ImGuiTableColumnFlags_PreferSortDescending, 0.0f, 3);
		ImGui::TableSetupColumn("Description", ImGuiTableColumnFlags_None | ImGuiTableColumnFlags_NoSort | ((flags & ImGuiTableFlags_NoHostExtendX) ? 0 : ImGuiTableColumnFlags_WidthStretch), 0.0f, 4);
		//隐藏行
        ImGui::TableSetupColumn("Hidden", ImGuiTableColumnFlags_None | ImGuiTableColumnFlags_DefaultHide | ImGuiTableColumnFlags_NoSort);
		ImGui::TableSetupScrollFreeze(1, 1);//锁定行 不滑动
        ImGui::TableHeadersRow();
        ImGui::SetWindowFontScale(1.0);
		for (int row_n = 0; row_n < 10; row_n++) {
			const bool item_is_selected = selection.contains(row_n);
			//ImGui::PushID(row_n);
			ImGui::TableNextRow(ImGuiTableRowFlags_None);
			// For the demo purpose we can select among different type of items submitted in the first column
			ImGui::TableSetColumnIndex(0);
			char label[32];
			sprintf_s(label, sizeof label, "%04d", row_n);
			if (ImGui::Selectable(label, item_is_selected, ImGuiSelectableFlags_SpanAllColumns | ImGuiSelectableFlags_AllowOverlap, ImVec2(0, 30)))
			{
				if (ImGui::GetIO().KeyCtrl){
					if (item_is_selected)
						selection.find_erase_unsorted(row_n);
					else
						selection.push_back(row_n);
				}else{
					selection.clear();
					selection.push_back(row_n);
				}
			}
			if (ImGui::TableSetColumnIndex(1))
				ImGui::TextUnformatted("item->Name");
			if (ImGui::TableSetColumnIndex(2)) {
				if (ImGui::SmallButton("Chop")) {}
			}
			if (ImGui::TableSetColumnIndex(3))
				ImGui::Text("%d", row_n);
			ImGui::TableSetColumnIndex(4);
			ImGui::Text("Lorem ipsum dolor sit amet");
			if (ImGui::TableSetColumnIndex(5))
				ImGui::Text("1234");
			//ImGui::PopID();
		}
        ImGui::EndTable();
	}
	
}

static void ShowDemoWindowTables() {
    //在这里,我们将展示三种不同的输出表的方法。
    //它们是同样事物的非常简单的变体!
    // [方法1]使用TableNextRow()创建新行,使用TableSetColumnIndex()选择列。
     在许多情况下,这是最灵活、最易于使用的模式
    if (ImGui::BeginTable("table1",3, ImGuiTableFlags_HighlightHoveredColumn)){
       
        ImGui::SetWindowFontScale(1.3);
        ImGui::TableSetupColumn("Game", ImGuiTableColumnFlags_WidthFixed, 80);
        ImGui::TableSetupColumn("LoadJson", ImGuiTableColumnFlags_WidthFixed,80);
        ImGui::TableSetupColumn("LGM", ImGuiTableColumnFlags_WidthFixed,  80);
        ImGui::TableSetupScrollFreeze(0, 1);
        ImGui::TableHeadersRow();
        ImGui::SetWindowFontScale(1);
      
        for (int row = 0; row < 4; row++){
            ImGui::TableNextRow();
            ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg0, ImGui::ColorConvertFloat4ToU32(ImVec4(.9, .0, .0, .5)));
            ImGui::SetNextItemAllowOverlap();
           
            for (int column = 0; column < 3; column++) {
                ImGui::TableSetColumnIndex(column); 
                char buff[40];
                sprintf_s(buff,sizeof buff, "Row %d %d", row, column);
                ImGui::Text(buff, row, column);
            }
        }
        ImGui::EndTable();
    }

    // [方法2]使用多次调用的TableNextColumn(),而不是使用for循环+ TableSetColumnIndex()。
    // 当您有代码手动提交每列的内容时,这通常更方便。
    if (ImGui::BeginTable("table2", 3)) {
        for (int row = 0; row < 4; row++){
            ImGui::TableNextRow();
            ImGui::TableNextColumn();
            ImGui::Text("Row %d", row);
            ImGui::TableNextColumn();
            ImGui::Text("Some contents");
            ImGui::TableNextColumn();
            ImGui::Text("123.456");
        }
        ImGui::EndTable();
    }

    // [方法3]我们调用TableNextColumn() _before_每个单元格。我们从不调用TableNextRow()
    // 因为TableNextColumn()将自动包裹并根据需要创建新的鱼子。
    // 当您的单元格都包含相同类型的数据时,这通常更方便。
    if (ImGui::BeginTable("table3", 3)) {
        for (int item = 0; item < 14; item++) {
            ImGui::TableNextColumn();
            ImGui::Text("Item %d", item);
        }
        ImGui::EndTable();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值