지식공유자 소개 ✒️
근무경력
현: Embedded 분야 SW Team leader
LG전자, VS사업부 IVI선행플랫폼/모듈개발
SW마에스트로, SW 멘토
강의경력
삼성전자, Qt & QML 강의
LG전자, Qt & QML 분야 사내 강사
한컴아카데미 Qt 강의 출강
다수의 IT기업 Qt 강의 출강
저서
Qt 프로그래밍
Qt Quick 프로그래밍
Qt5 프로그래밍 가이드
MeeGo 프로그래밍 완벽 가이드
Qt 실전 프로그래밍
SW커뮤니티 운영
Qt 개발자 커뮤니티 운영자 ( www.qt-dev.com )
Courses
Reviews
- Revolutionizing Web Development: WebAssembly Masterclass in C, C++, and Rust
- [Introduction] Qt 6 Programming Part 1
- [Introduction] Qt 6 Programming Part 2
- [Beginner] QML Programming Part 1
- [Introduction] Qt 6 Programming Part 2
Posts
Q&A
코드 크가가 너무 작은대 이거 화면확대 어떻게 하나요?
만약 Qt creator에서 코드 크기가 작은거라면 Shift + Scroll 또는 Shift + [+] 하시면 됩니다.
- 0
- 4
- 13
Q&A
코드 크가가 너무 작은대 이거 화면확대 어떻게 하나요?
앞으로는 코드가 더 잘 보이도록 폰트 크기를 조정해서 강의를 제작하도록 하겠습니다. 좋은 의견 정말 감사합니다!”
- 0
- 4
- 13
Q&A
혹시 강의 연장 가능할까요? ㅠㅠ
안녕하세요. OS님 3개월정도 더 연장해 드렸습니다. 감사합니다. 김대진 드림.
- 1
- 2
- 19
Q&A
테스트 배포시 에러가 발생합니다.
안녕하세요. geekgleeguru 님, 에러 메시지와 현재 상황을 보면, Qt for WebAssembly 애플리케이션이 브라우저에서 SharedArrayBuffer 를 사용하려고 시도하는데, 이 기능을 사용하려면 웹 페이지가 crossOriginIsolated 되어야 합니다.즉, 브라우저에서 로컬 서버(http://127.0.0.1)를 통해 Qt WebAssembly를 실행할 때 필요한 보안 헤더가 빠졌기 때문에 WebAssembly 모듈이 제대로 로딩되지 못하고 로딩 화면에서 멈춰 있는 것입니다. 원인:Qt WebAssembly는 성능 향상을 위해 SharedArrayBuffer를 사용하려고 하며, 이를 위해서는 다음 조건을 모두 충족해야 함:HTTPS 또는 localhost 에서 서비스되어야 함HTTP 응답 헤더에 다음 두 항목이 반드시 포함되어야 함:Cross-Origin-Opener-Policy: same-originCross-Origin-Embedder-Policy: require-corp혹시 더 궁금한게 있으면 언제든 질문해 주세요.감사합니다. 김대진 드림.
- 0
- 2
- 48
Q&A
달력 31일까지 나오지 않음.
안녕하세요. 송인섭님, 소스코드를 설명하는데 있어 Calendar 예제를 한번에 설명하면 이해하는데 어려울것 같아 5단계로 나누어 설명했어요. 예제를 계속 듣다보면 5개로 소스코드가 되어 있는것을 알 수 있습니다. 차근차근 듣다보면 완성해 나가면서 Calendar 기능이 구현되는 것을 알 수 있습니다. 혹시 더 궁금한게 있으면 언제든 질문해 주세요. 감사합니다. 김대진 드림.
- 1
- 2
- 35
Q&A
parent.width 관련 질문.
안녕하세요. 송인섭님,좋은 질문입니다! QML에서 Window를 루트로 선언하고 그 안에 Rectangle을 선언할 때, parent.width를 사용해도 문법적으로는 문제 없습니다. 다만 실제로는 parent가 무엇을 가리키는지에 따라 달라지며, 다음과 같은 이유들 때문에 종종 parent.width 대신 Window 혹은 root의 id를 사용하는 경우가 많습니다.Window { width: 400 height: 112 Rectangle { width: parent.width // 가능 height: 100 } }이 경우 Rectangle의 parent는 Window가 맞으므로 parent.width == 400이 됩니다. 정상 작동합니다.하지만 Rectangle이 중첩된 구조일 경우, 예를 들어 중간에 Item이 끼어 있다면 parent는 더 이상 Window가 아닐 수 있습니다. 개발자가 보기 쉽게 하기 위해 다음과 같이 명확하게 하는 경우가 많습니다:Window { id: root width: 400 height: 112 Rectangle { width: root.width height: 100 } } 혹시 더 궁금한게 있으면 언제든 질문해 주세요.감사합니다. 김대진 드림.
- 1
- 2
- 37
Q&A
custom Widget 강의 에서 알려주신 promoted widgets 질문 드립니다.
안녕하세요. 공부중님, (문제 요약)Promote 버튼이 비활성화되어 있다.(원인)-> 이는 위젯을 promotion 대상으로 지정하지 않았기 때문에 발생합니다.(해결 방법)1. .ui 파일에서 Qt Designer를 엽니다.2. 위젯을 하나 추가합니다. (예: QWidget, QPushButton 등, 커스텀 클래스가 상속한 베이스 위젯)3. 해당 위젯을 선택한 상태에서 오른쪽 마우스 클릭 → "Promote to..." 선택4. Promoted class name과 Header file을 입력 후 Add → Promote 버튼이 이제 활성화됩니다.즉, promotion 목록에 추가만으로는 Promote 버튼이 활성화되지 않으며, UI 상에서 실제로 위젯을 선택하고 "Promote to..."를 눌러야 합니다.---------추가 질문: "Widget Box"에 커스텀 위젯을 직접 등록할 수 있나요?가능하지만 기본 Qt Designer만으로는 안 되고, 플러그인 개발이 필요합니다. 혹시더 궁금한게 있으면 언제든 질문해 주세요.감사합니다. 김대진드림.
- 1
- 2
- 56
Q&A
QT와 QT Designer에 대한 질문 사항
안녕하세요! 질문 주신 두 가지에 대해 자세히 설명드릴게요.1. 왜 Qt Designer 없이 직접 Python 코드로 UI를 작성할까요?Qt Designer는 GUI를 직관적으로 구성할 수 있어 매우 편리합니다. 하지만 강의에서 Python 코드로 직접 UI를 구현한 이유는 다음과 같은 장점 때문일 수 있습니다: 더 유연한 제어 Qt Designer로 만든 .ui 파일은 구조가 고정되어 있어 동적으로 UI를 바꾸기가 어렵습니다. 코드로 직접 작성하면 복잡한 UI 로직이나 동적 생성이 쉬워집니다.디버깅 및 유지보수 편의UI가 코드에 직접 들어있으면 디버깅과 버전 관리(Git 등)에서 유리할 수 있습니다. .ui는 XML 기반이라 diff 보기가 어렵습니다.의존성 제거.ui 파일을 사용하려면 pyuic6로 변환하거나 QUiLoader 등으로 로딩해야 하므로 추가적인 빌드 작업이 필요합니다. 코드 방식은 이 과정을 생략합니다. 정리: Qt Designer는 빠르고 간편하지만, 코드 방식은 더 강력하고 유연합니다. 실무에서는 두 방법을 혼용하는 경우가 많습니다. 2. Qt Designer를 더 깊게 배우고 싶습니다. 어떤 자료가 좋을까요?Qt Designer Manual (공식) 기능별 설명이 정리되어 있습니다.https://doc.qt.io/qt-5/qtdesigner-manual.html위의 자료를 둘러보시면 도움이 될것 같습니다. 무엇보다도 깊게 배우기를 원하시면 많이 써보는것이 자료를 보고 공부하는 것보다 더 많은 것을 배울 수 있을것 같습니다. 더 궁금한게 있으면 언제든 질문해 주세요. 감사합니다. 김대진 드림.
- 1
- 2
- 86
Q&A
mutex, incNumber는 global 안붙여도 되는건가요?
global 없이도 잘 동작하는 경우가 있다?네, 이건 두 가지 이유 중 하나 때문입니다:① 이미 global이 코드에 명시되어 있다→ 예제 소스코드상에 global numUsed가 Producer와 Consumer 둘 다에 들어 있습니다.global numUsed위의 코드가 이미 선언되어 있음그래서 당연히 에러 없이 잘 동작합니다.만약 이걸 빼면 어떻게 될까요?② global을 빼면 실제로 에러가 발생한다예를 들어 아래처럼 Producer에서 global numUsed를 뺐다고 가정하면:class Producer(QThread):def run(self):for i in range(10):time.sleep(1)mutex.lock()numUsed += 1 # ⚠ 여기가 에러 발생incNumber.wakeAll()mutex.unlock()실행하면 아래와 같은 에러가 뜹니다:UnboundLocalError: cannot access local variable 'numUsed' where it is not associated with a value즉, 정상적인 Python 동작에서는 반드시 global numUsed가 필요합니다. 혹시 더 궁금한게 있으면 언제든 질문해 주세요.감사합니다. 김대진 드림.
- 1
- 2
- 66
Q&A
Qt Resource를 사용하는 예제 구현 10:15 구간 질의
안녕하세요. One님Visual Studio Code 에서 Extention 에서 "Better Align" 이라고 있는데 이걸 사용해서 맞추었습니다.(사진) 혹시 더 궁금한게 있으면 언제든 질문해 주세요.감사합니다. 김대진드림.
- 1
- 2
- 77