Как написать простое GUI приложение с помощью C++?
Приветствую, Habr!
Сегодня я бы хотел разобрать такую библиотеку, которая лучше всего по моему мнению подходит для написания программ с графическим дизайном для любой операционки на Плюсах. Я не буду вдаваться в подробности этой библиотеки в этом посте, я лишь могу сказать, что wxWidgets имеет большие преимущества перед другими GUI библиотеками. Эта библиотека мощная, быстрая и кроссплатформенная. К тому же, эта библиотека есть под разные языки программирования (Python,Perl,Ruby)
И так, мы будем разбирать эту библиотеку на Linux.
Установка
sudo apt-get install libwxgtk3.0-gtk3-dev
Создаем файл под любым названием и создаем в ней main.cpp. Сегодня буду билдить прогу через Cmake.
#include <wx/wx.h>
Мы включили в наш файл главный header, в котором содержатся все нужные Headers. Далее нам нужно создать главный Init класс.
class App : public wxApp {
public:
virtual bool OnInit(); // Виртуальная функция иницилизации.
};
Так же нужно создать класс Frame, для того, что бы мы могли размещать элеметы в нашем окне:
class Frame : wxFrame {
public:
Frame(); // Конструктор класса | Передаются дефолтные аргументы.
// Можно также добавить их вручную.
};
Реализация функции bool OnInit();
bool App::OnInit() {
Frame *frame = new Frame();
frame->Show(true);
return true;
}
Frame::Frame()
: wxFrame(nullptr,wxID_ANY, "Application 3.0.5")
{
// Для дефолта можно оставить пустым.
// ЗДЕСЬ ДОБАВЛЯЮТСЯ ВСЕ ВИДЖЕТЫ
wxPanel* panel = wxPanel(this);
wxButton* button = new wxButton(panel, -1, "Button");
}
Так же не могу не сказать о том, что мы Динамически выделяем память для всех наших виджетов, и что бы не выскочили умники, скажу что их освобождать вручную не надо. Этим займется WX.
Ну и добавим одну маааааленькую вещь, для того , что бы приложение заработало:
wxIMPLEMENT_APP(App);
Ну и можно запускать. Хотя...
Узнать Ответ:
Что бы забилдить проект, нам нужен либо IDE, где мы вручную будем указывать флаги библиотеки, либо CMake. Как я раньше обозначился, для проекта я буду использовать именно CMake.
В нашем файле, рядом с главным main.cpp, мы создадим CMakeLists.txt.
cmake_minimum_required(VERSION 3.0.5) #Минимальная версия cmake
project(main) #Название проекта
find_package(wxWidgets 3.0.5 REQUIRED) # Укажите свою версию библиотеки
include(${wxWidgets_USE_FILE}) #если нашли пакет, инклюдим его
link_libraries(${wxWidgets_LIBRARIES} ${OPENGL_LIBRARIES})
# ничего особенного, настройки стандарта c++
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
#
add_executable(${PROJECT_NAME} WIN32 MACOSX_BUNDLE main.cpp)
Для того, что бы забилдить проект, в рабочем файле создаем директорию build
В ней открываем терминал и пишем: cmake ..
После удачного билдинга, запускаем команду make
Ну и на выходе получаем готовый Makefile, а также скомпилированный проект.
Спасибо !
В следующем посту будем писать более интересную прогу !