Tabs

There is no real tutorial yet about the Tab widget, but below you can find some code to understand how to use it.

#include <TGUI/TGUI.hpp>

void onTabSelected(const tgui::Callback& callback)
{
    // Get the tab that sent the callback
    tgui::Tab::Ptr tab = callback.widget;

    // Access the gui.
    tgui::Container* gui = tab->getParent();

    // Show the correct panel
    if (tab->getSelected() == "First")
    {
        gui->get("FirstPanel")->show();
        gui->get("SecondPanel")->hide();
    }
    else if (tab->getSelected() == "Second")
    {
        gui->get("FirstPanel")->hide();
        gui->get("SecondPanel")->show();
    }
}

int main()
{
    sf::RenderWindow window(sf::VideoMode(800, 600), "TGUI.Net Tabs Example");

    sf::Texture background1, background2;
    background1.loadFromFile("xubuntu_bg_aluminium.jpg");
    background2.loadFromFile("Linux.jpg");

    tgui::Gui gui = tgui::Gui(window);
    gui.setGlobalFont("TGUI/fonts/DejaVuSans.ttf");

    // Create the tabs
    tgui::Tab::Ptr tabs(gui);
    tabs->load("TGUI/widgets/Black.conf");
    tabs->add("First");
    tabs->add("Second");
    tabs->setPosition(20, 20);

    // Create the first panel
    tgui::Panel::Ptr panel1(gui, "FirstPanel");
    panel1->setSize(400, 300);
    panel1->setPosition(tabs->getPosition().x, tabs->getPosition().y + tabs->getTabHeight());
    panel1->setBackgroundTexture(&background1);

    // Create the second panel (copy of first one, but with different image)
    tgui::Panel::Ptr panel2 = gui.copy(panel1, "SecondPanel");
    panel2->setBackgroundTexture(&background2);

    // Enable callback when another tab is selected
    tabs->bindCallbackEx(onTabSelected, tgui::Tab::TabChanged);

    // Select the first tab and only show the first panel
    tabs->select("First");
    panel1->show();
    panel2->hide();

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();

            gui.handleEvent(event);
        }

        window.clear();
        gui.draw();
        window.display();
    }

    return 0;
}