Подключение к проекту
Создайте файлы 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);
}