이곳은 다양한 오픈소스 프로젝트를 소개하고 리뷰, 활용 방법을 공유합니다.
조회 수 4142 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

Nana는 C++용 크로스플랫폼 GUI 라이브러리다. 

 

http://nanapro.org

 

지원하는 플랫폼은 Windows, Linux(X11), FreeBSD이고 macOS 는 실험적으로 지원한다고한다. Boost Software 라이선스에 따라 사용할 수 있고 현재 1.7.4가 최신버전이다.

 

nana는 소스코드 형태로 제공되며 소스코드를 직접 빌드해야한다. 소스코드를 빌드할 때 platform_spec_selector.hpp 에서 플랫폼에 따라 의존성 헤더를 선택한다.

 

nana의 최대 강점은 쉽고 빠르게 가벼운 GUI응용프로그램을 개발할 수 있다는 점이다. 일반적인 GUI를 구성하는데 필요한 기본적인 위젯들이 제공되기 때문에 간단한 응용프로그램을 개발하기에 좋다. 

nana.png

 

nana는 한가지 눈에 띄는 특징이 있는데 Div Text 형태로 UI레이아웃 구성한다는 점이다. 문제는 단순 문자열로 레이아웃을 작성하다 보니 구문 오류를 찾기가 까다롭다. 프로그래머는 구문 오류를 빌드타임 때는 알 수 없다. 응용프로그램을 실행 할 때 발생한다. 예를 들어 레이아웃 Div 코드를 다음과 같이 작성 후 실행 하면 빌드는 문제 없이 완료된다.

fm.div("vert <><<><weight=80% text><>><><weight=24<><button>>><>");

 

이제 응용프로그램을 실행하려고 하면 다음과 같은 오류 메세지를 출력한다. 대략적인 위치를 알려주긴 하지만 문자열에서 찾기란 여전히 쉽지 않다.

terminate called after throwing an instance of 'nana::place::error' what(): from widget 'Nana Window'; nana::place error failed to set div('vert <><<><weight=80% text><>><><weight=24<><button>>><>'): the div-text ends prematurely from place implementation ' in field 'unnamed' at position 54 in div_text:
만약 레이아웃이 간단하지 않고 복잡한 레이아웃이라면? Div문을 자동으로 작성해주는 디자인 툴이 분명 필요할 것 같은데 다행히 RAD 툴이 있었다.

NanaCreator.jpg

 

Nana Creator 라는 툴(전반적으로 Qt 프레임워크에서 영감을 많이 받은듯...)인데 레이아웃을 구성하고 C++에서 사용할 수 있는 헤더파일로 변환해준다.

 

TAG •

  1. Elastic Stack 에 대해서

    Date2024.08.25 Bymakersweb Views1812
    Read More
  2. Flutter 위젯의 상태관리에 대해서

    Date2023.04.06 Bymakersweb Views2053
    Read More
  3. [NodeGui] JavaScript로 데스크탑 응용프로그램 작성

    Date2023.02.21 Bymakersweb Views4522
    Read More
  4. openFrameworks 한글 폰트 설정 및 출력하기

    Date2023.02.19 Bymakersweb Views1847
    Read More
  5. LVGL 을 통해 GUI 구현 시 한글 폰트 추가

    Date2023.02.07 Bymakersweb Views4323
    Read More
  6. Windows에서 Qt Creator + CMake + vcpkg 로 C++ 개발환경 구성 (POCO 라이브러리 DirectoryWatcher 예제)

    Date2023.01.14 Bymakersweb Views2519
    Read More
  7. NAppGUI, C언어용 크로스 플랫폼 GUI 라이브러리

    Date2022.10.10 Bymakersweb Views3265
    Read More
  8. No Image

    OTA 오픈소스 프로젝트

    Date2022.08.03 Bymakersweb Views2311
    Read More
  9. AGL (Automotive Grade Linux) 개요

    Date2022.06.19 Bymakersweb Views4491
    Read More
  10. Chromium과 Ozone 층

    Date2022.03.03 Bymakersweb Views2564
    Read More
  11. Flutter Application 에서 한글(EUC-KR) 깨져서 나오는 문제

    Date2022.01.06 Bymakersweb Views5243
    Read More
  12. CopperSpice 에 대해서 (C++ Gui 라이브러리)

    Date2022.01.02 Bymakersweb Views2617
    Read More
  13. Flutter/Dart 와 Qt/QML 비교

    Date2021.11.07 Bymakersweb Views3299
    Read More
  14. VSCode 와 Qbs 플러그인으로 C/C++ 개발환경 구성

    Date2021.09.12 Bymakersweb Views2728
    Read More
  15. ZeroMQ 를 이용한 Qt 응용프로그램 간 통신

    Date2021.08.28 Bymakersweb Views2548
    Read More
  16. C++를 위한 Lottie 라이브러리 with SDL2

    Date2021.08.15 Bymakersweb Views3026
    Read More
  17. CANdevStudio 를 사용하여 CAN 네트워크 시뮬레이션

    Date2021.03.09 Bymakersweb Views3796
    Read More
  18. Protocol Buffers 를 이용한 직렬화 with Conan Package Manager

    Date2021.02.24 Bymakersweb Views1955
    Read More
  19. 라즈베리파이에서 Redis의 Pub/Sub 패턴을 사용하는 Electron 응용프로그램

    Date2021.01.31 Bymakersweb Views2699
    Read More
  20. Nana, C++용 크로스플랫폼 GUI 라이브러리

    Date2021.01.06 Bymakersweb Views4142
    Read More
Board Pagination Prev 1 2 Next
/ 2