Tabs
TGUI 0.7 is no longer supported, use a newer TGUI version instead.
In the example below, two tabs are created with a corresponding panel for each. Only one of the panels is shown at a time depending on which tab is selected.
Note that this example uses the optional unbound parameter feature of the connect function, it will not compile on VS2013.
#include <TGUI/TGUI.hpp>
void onTabSelected ( tgui :: Gui & gui , std :: string selectedTab )
{
// Show the correct panel
if ( selectedTab == "First" )
{
gui . get ( "FirstPanel" ) -> show ();
gui . get ( "SecondPanel" ) -> hide ();
}
else if ( selectedTab == "Second" )
{
gui . get ( "FirstPanel" ) -> hide ();
gui . get ( "SecondPanel" ) -> show ();
}
}
int main ()
{
sf :: RenderWindow window ( sf :: VideoMode ( 800 , 600 ), "TGUI Tabs Example" );
tgui :: Gui gui { window };
tgui :: Tab :: Ptr tabs = tgui :: Tab :: create ();
tabs -> add ( "First" );
tabs -> add ( "Second" );
tabs -> setPosition ( 20 , 20 );
gui . add ( tabs );
// Create the first panel
tgui :: Panel :: Ptr panel1 = tgui :: Panel :: create ();
panel1 -> setSize ( 400 , 300 );
panel1 -> setPosition ( tabs -> getPosition (). x , tabs -> getPosition (). y + tabs -> getTabHeight ());
gui . add ( panel1 , "FirstPanel" );
// Create the second panel (by copying of first one)
tgui :: Panel :: Ptr panel2 = tgui :: Panel :: copy ( panel1 );
gui . add ( panel2 , "SecondPanel" );
// Add some widgets to the panels
panel1 -> add ( tgui :: Picture :: create ( "xubuntu_bg_aluminium.jpg" ));
panel2 -> add ( tgui :: Picture :: create ( "Linux.jpg" ));
// Enable callback when another tab is selected (pass reference to the gui as first parameter)
tabs -> connect ( "TabSelected" , onTabSelected , std :: ref ( gui ));
// 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 ();
}
}