본문 바로가기

Qt

(11)
QML Stopwatch 구현 따라 하기 - MVVM 구조로 설계한 Qt 아키텍처 들어가며이전 글에서 QML의 내부 동작 원리와 C++ 연동 방법을 정리했다. QML은 상태 기반 UI에 강점이 있고,C++은 성능과 로직 처리에 강점이 있다. 하지만 두 영역을 철저히 분리하지 않으면 금방 스파게티 코드가 되어버리고,유지보수 비용은 기하급수적으로 상승한다. 이번 글에서는 Stopwatch 예제를 통해MVVM 원칙을 따르는 설계 방식을 정리해 보려 한다.글을 작성하며 느낀 점은,MVVM을 설명하는 과정이 곧 객체지향 개념을 설명하는 과정과 매우 닮아 있다는 것이었다.내가 객체지향을 이해하는데 가장 큰 도움을 준 책은 였다.이 책은 "상태가 아니라 행동을 중심으로 설계하라"는 메시지를 강조한다.이번 예제 역시 그 관점에서 접근했다.https://blog.aladin.co.kr/Bbird/16..
Qt6 QML 따라하기 ㅡ 프로젝트 생성부터 C++ 연동까지 들어가며이전 글에서 QML의 이론적 배경을 정리했다.런타임 리플렉션을 활용한 pub/sub 구조와,프레임 기반 렌더링을 통한 최적화 개념을 살펴보며QML이 QWidget보다 충분히 경쟁력 있는 기술이라는 인상을 받았다. 이번 글에서는 이론에 그치지 않고,실제로 QML을 지원하는 Qt프로젝트를 만들어 보며실무 프로젝트에 도입할 수 있을지 검토한 과정을 기록해 보려 한다. 이전 글 : 2026.02.02 - [Qt] - Qt QML 내부 동작 원리 이해하기 ㅡ Property Binding, Event Loop, Scene Graph Qt QML 내부 동작 원리 이해하기 ㅡ Property Binding, Event Loop, Scene Graph들어가며QtFramework에 대해 공부하며 QEventLoo..
Qt QML 내부 동작 원리 이해하기 ㅡ Property Binding, Event Loop, Scene Graph 들어가며QtFramework에 대해 공부하며 QEventLoop, QObjec, moc(Meta Object Compiler)에 대해 공부했다.이 글은 지금까지의 내용을 배경지식을 활용하여 QML에 대해 공부해 보려 한다.2026.01.23 - [Qt] - Qt Event Loop 동작 원리 정리 ㅡ 타이머, 이벤트, 스레드까지2026.01.28 - [Qt] - Qt QObject와 moc의 동작 원리 이해하기 ㅡ Signal/Slot과 런타임 리플렉션QML을 공부하며 이전에 정리한 글에 핵심 개념이 전부 있다는걸 알았다.QML(Qt Modeling / Meta-object Language)이란?QML은 Qt의 메타 객체 시스템(QMetaObject)과 Event Loop 위에서 동작하는 선언형 UI 언..
Qt QObject와 moc의 동작 원리 이해하기 ㅡ Signal/Slot과 런타임 리플렉션 들어가며지난 글에서는 Qt의 근간이 되는 Event Loop의 동작 원리를 정리했다.2026.01.23 - [Qt] - Qt Event Loop 동작 원리 정리 ㅡ 타이머, 이벤트, 스레드 까지 Qt Event Loop 동작 원리 정리 ㅡ 타이머, 이벤트, 스레드 까지들어가며Qt는 크로스 플랫폼 애플리케이션 개발 프레임워크로,동일한 코드로 Windows, Linux, macOS, Embedded Linux 등 다양한 운영체제에서 동작하는 App을 만들 수 있다. QObject, Signal/Event, QTimer 등을 사용prejudice.tistory.com이번 글에서는 조금 더 클래스 관점에서 접근해,Qt Framework의 핵심이 되는 QObject와이를 가능하게 하는 moc(Meta-Object..
Qt Event Loop 동작 원리 정리 ㅡ 타이머, 이벤트, 스레드 까지 들어가며Qt는 크로스 플랫폼 애플리케이션 개발 프레임워크로,동일한 코드로 Windows, Linux, macOS, Embedded Linux 등 다양한 운영체제에서 동작하는 App을 만들 수 있다. QObject, Signal/Event, QTimer 등을 사용해 개발하다 보면어느 순간 "Qt 내부에서는 어떻게 동작하는 걸까?"라는 궁금증이 생기기 마련이다. 이 글에서는 Qt가 내부적으로 어떤 흐름을 거쳐 이벤트를 처리하는지,Qt Event Loop를 중심으로 정리해 보려 한다.Qt Event LoopQt로 개발하다 보면 자연스럽게 접하게 되는 용어가 Event Loop이다. Event Loop는 Qt에서 이벤트가 처리되는 방식을 설명하는 추상적인 개념이며,실제 동작 흐름은 다음과 같이 구성된다.OS (..
Qt IPC 성능 비교 실험기 ㅡ QSharedMemory, QLocalSocket, QTcpSocket, QRemoteObject 들어가며Qt Framework를 사용하는 개발자라면, Qt에서 공식 제공하는 IPC를 활용해 개발하고 싶을 것이다. 프로토콜이나 아키텍처를 설계할 때 IPC 선정은 매우 중요한 요소이고,그중에서도 전송 속도는 항상 주요한 판단 기준이 된다. Qt Framework를 사용하며 IPC별 속도가 궁금해졌고,직접 테스트 환경을 구성해 IPC별 성능 비교를 진행해 보았다. 이 글에서는 다음 네 가지 IPC의 성능을 비교한다.QSharedMemoryQLocalSocketQTcpSocketQRemoteObject테스트 환경 및 방법테스트는 Windows PC의 Local 환경에서 진행했다.Qt로 서버를 구현하고, googletest(gtest) 기반의 유닛 테스트를 통해 성능을 측정했다. 테스트 시나리오데이터 전송 ..
Qt6 DLL 생성부터 gtest 유닛 테스트까지 ㅡ 프로젝트 구성 따라하기 들어가며Qt 6 환경에서 DLL 프로젝트를 만들고googleTest로 유닛 테스트를 구성해 보고 싶었지만,테스트 환경을 구성하며 빌드는 되지만 테스트가 실행되지 않는 문제를 겪었다. 그 문제를 해결하는 과정을 바탕으로유닛테스트 환경을 처음 구성하는 사람들이 따라 할 수 있도록 정리해 보려 한다.테스트 환경 구성 목표이번에 목표로 한 테스트 환경은 다음과 같다.최종목표 : Qt 6.11 기반 기능 Unit Test☐ Qt 6.11 Compiler 설치☐ Qt 6 Framework로 기능 구현 후 DLL 형태로 빌드☐ VsCode에서 googletest 관리 ㄴ ☐ DLL 로드 후 유닛 테스트 실행Qt 6 개발 환경 준비먼저 Qt Maintenance Tool을 이용해 다음 환경을 설치했다.Qt 6.11M..
Qt 4 · Qt 5 · Qt 6 차이점 정리 — 레거시 컴파일 실무 경험 들어가며임베디드 개발을 하다 보면 레거시가 되어버린 Qt 4.8 또는 Qt 5 기반 개발 환경을 비교적 쉽게 접하게 된다.나 역시 임베디드 크로스 컴파일 환경에서 Qt 4.8과 Qt 5, Qt 6을 모두 사용해 왔고,그 과정에서 체감한 버전별 차이와 주의할 점을 정리해 보고자 한다.우리 회사는 Qt Framework를 사용하는 제조업 기반 HMI 회사로,임베디드 장비에는 ARM Cortex-A architecture CPU를 사용한다. · Embedded Device : Ubuntu 18.04 + Qt4.8 · Linux PC용 SW : Ubuntu 22.04 + Qt5이처럼 서로 다른 환경을 동시에 다루며 겪었던 경험을 중심으로 글을 써보려 한다.Qt 4.8을 사용하며 느낀 점Qt 4.8.7은 2015..