Подключение к проекту

Создайте файлы LoginApp.h, LoginApp.cpp и main.cpp. Настройте CMakeLists.txt.

#ifndef GTKTEST_LOGINAPP_H
#define GTKTEST_LOGINAPP_H

#include <gtkmm.h>

class LoginApp : public Gtk::ApplicationWindow {
    Gtk::Box *box;
    Glib::RefPtr<Gtk::Entry> user_input;
    Glib::RefPtr<Gtk::Entry> password_input;
    Glib::RefPtr<Gtk::Button> login_button;
    Glib::RefPtr<Gtk::Builder> ui;
public:
    LoginApp();
    void on_login_button_clicked();
};

#endif //GTKTEST_LOGINAPP_H
#include "LoginApp.h"

LoginApp::LoginApp() : ui{Gtk::Builder::create_from_file("login.glade")} {
    if (ui) {
        ui->get_widget<Gtk::Box>("box", this->box);
        this->user_input = Glib::RefPtr<Gtk::Entry>::cast_dynamic(ui->get_object("user_input"));
        this->password_input = Glib::RefPtr<Gtk::Entry>::cast_dynamic(ui->get_object("password_input"));
        this->login_button = Glib::RefPtr<Gtk::Button>::cast_dynamic(ui->get_object("login_button"));
        this->login_button->signal_clicked().connect(sigc::mem_fun(*this, &LoginApp::on_login_button_clicked));
        this->add(*this->box);

        this->set_title("Войти");
        this->set_border_width(5);
        this->set_default_size(300, 100);
        this->set_position(Gtk::WIN_POS_CENTER);

        show_all();
    }
}

void LoginApp::on_login_button_clicked() {
    Glib::ustring user = this->user_input->get_text(), pass = this->password_input->get_text();
    if (user == "user" && pass == "pass") {
        Gtk::MessageDialog dialog(*this, "Успех!", FALSE, Gtk::MESSAGE_INFO, Gtk::BUTTONS_CLOSE, TRUE);
        dialog.run();
    } else {
        Gtk::MessageDialog dialog(*this, "Неудача!", FALSE, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_CLOSE, TRUE);
        dialog.run();
    }
}
#include <gtkmm.h>
#include "LoginApp.h"

int main(int argc, char **argv) {
    auto app = Gtk::Application::create(argc, argv);

    LoginApp loginApp;

    return app->run(loginApp);
}