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;
}