Как стать автором
Обновить

wxWidgets | C++

Как написать простое 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, а также скомпилированный проект.

Спасибо !

В следующем посту будем писать более интересную прогу !

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.