TGUI 0.7 is no longer supported, use a newer TGUI version instead.
This codes how to create a login screen which scales nicely when the screen size changes.
#include <TGUI/TGUI.hpp> void login(tgui::EditBox::Ptr username, tgui::EditBox::Ptr password) { std::cout << "Username: " << username->getText().toAnsiString() << std::endl; std::cout << "Password: " << password->getText().toAnsiString() << std::endl; } void loadWidgets( tgui::Gui& gui ) { // Load the black theme auto theme = tgui::Theme::create("TGUI/widgets/Black.txt"); // Get a bound version of the window size // Passing this to setPosition or setSize will make the widget automatically update when the view of the gui changes auto windowWidth = tgui::bindWidth(gui); auto windowHeight = tgui::bindHeight(gui); // Create the background image (picture is of type tgui::Picture::Ptr or std::shared_widget<Picture>) auto picture = tgui::Picture::create("xubuntu_bg_aluminium.jpg"); picture->setSize(tgui::bindMax(800, windowWidth), tgui::bindMax(600, windowHeight)); gui.add(picture); // Create the username edit box tgui::EditBox::Ptr editBoxUsername = theme->load("EditBox"); editBoxUsername->setSize(windowWidth * 2/3, windowHeight / 8); editBoxUsername->setPosition(windowWidth / 6, windowHeight / 6); editBoxUsername->setDefaultText("Username"); gui.add(editBoxUsername, "Username"); // Create the password edit box tgui::EditBox::Ptr editBoxPassword = theme->load("EditBox"); editBoxPassword->setSize(windowWidth * 2/3, windowHeight / 8); editBoxPassword->setPosition(windowWidth / 6, windowHeight * 5/12); editBoxPassword->setPasswordCharacter('*'); editBoxPassword->setDefaultText("Password"); gui.add(editBoxPassword, "Password"); // Create the login button tgui::Button::Ptr button = theme->load("Button"); button->setSize(windowWidth / 2, windowHeight / 6); button->setPosition(windowWidth / 4, windowHeight * 7/10); button->setText("Login"); gui.add(button); // Call the login function when the button is pressed button->connect("pressed", login, editBoxUsername, editBoxPassword); } int main() { // Create the window sf::RenderWindow window(sf::VideoMode(400, 300), "TGUI window"); tgui::Gui gui(window); try { // Load the widgets loadWidgets(gui); } catch (const tgui::Exception& e) { std::cerr << "Failed to load TGUI widgets: " << e.what() << std::endl; return 1; } // Main loop while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { // When the window is closed, the application ends if (event.type == sf::Event::Closed) window.close(); // When the window is resized, the view is changed else if (event.type == sf::Event::Resized) { window.setView(sf::View(sf::FloatRect(0, 0, event.size.width, event.size.height))); gui.setView(window.getView()); } // Pass the event to all the widgets gui.handleEvent(event); } window.clear(); // Draw all created widgets gui.draw(); window.display(); } return EXIT_SUCCESS; }