![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpugeM%2FbtsD6xkcbsE%2FT7mXP90k85c8KudPNVcuNK%2Fimg.png)
Qt/Setup & Tips 2024. 1. 28.
<Win> Qt Maintenance
⏩ 미러 사이트에서 가까운 위치를 찾아, MaintenanceTool 실행 옵션으로 입력한다. 1. MaintenanceTool이 설치된 경로로 이동하여, 주소창에 "cmd" 를 입력하여 터미널을 실행시킨다. 2. 미러 사이트를 설정하여, MaintenanceTool을 실행시키는 명령어를 터미널에 입력한다. MaintenanceTool.exe --mirror http://ftp.jaist.ac.jp/pub/qtproject/ 3. MaintenanceTool을 실행
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdxyJx1%2FbtsD9BT740p%2FJMn7Pq61Y4WAODrYMlpXE1%2Fimg.png)
Qt/Setup & Tips 2024. 1. 28.
<Win> GitHub in Qt
깃과 깃허브는 다릅니다. Qt Creator에서 GitHub 업로드 방법만 간단히 요약합니다. ⏩ 작업 환경 Window11 22H2, Qt Creator 12.0.1 Based on Qt 6.6.0 (MSVC 2019, x86_64) Qt Creator 원격 저장소 공식문서 링크 ⏩ 요약 더보기 GitHub Terminal 사용법 요약 git init git commit -m "입력할메시지" git branch -M main git remote add origin 깃허브주소 git push -u origin main GitHub Qt Creator 사용법 요약 Git 설치 Git 시작 Git 로컬 저장소 커밋 GitHub 원격 저장소 생성 GitHub 원격 저장소 설정 Qt Creator Push 단축..
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flhno6%2Fbtst7Rtw7st%2FKdSyvgQXFGDGwcPfs3Zk1K%2Fimg.png)
Qt/Setup & Tips 2023. 9. 11.
CPU 아키텍처와 컴파일러
아키텍처 종류 x86 Intel 32bit CPU Windows, Linux, Mac x86_64 (amd64) x86 호환, Intel 64bit CPU AMD, Intel 라이센스 협약으로 amd64 명칭도 사용 Windows, Linux, Mac arm arm 32bit CPU x86 은 데스크탑, arm은 모바일 등 저전력으로 대표됨 arm64 (arm64/v8) 32bit arm 호환, arm 64bit CPU 모바일, 스마트tv, 가전 등 저전력 장치 애플 M1 이후 아키텍처와 컴퍼일러 빌드 결과물은, 특정 아키텍처에서만 실행되는 바이너리다. 실행되는 아키텍처에 맞는 컴파일러를 선택하여 빌드해야 한다.
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcvx77y%2FbtstwZlwmrq%2F9o0mm6qNr2r71YKtjmGiv0%2Fimg.png)
Qt/Setup & Tips 2023. 9. 10.
<Ubuntu> Android 환경설정(2) - Qt, JDK, SDK, NDK
설치될 작업 환경 확인 *lsb (Linux Standard Base) lsb_release -a 기본 브라우저로 크롬 설정 xdg-settings set default-web-browser chromium-browser.desktop 설치된 Qt Component 확인 *CPU 아키텍처(arm64, amd64, etc)와 컴파일러 JDK JDK 설치방법 + 제거방법 + 환경변수 설정 방법 링크 SDK SDK 다운로드 링크 1. SDK 다운 후 압축 해제 2. Home 경로에 Android 폴더를 만들고, 압축 해제한 파일을 가져온다. 3. 가져온 폴더 이름을 tools로 변경한다. *최종 폴더 경로: /home/basiclike/Android/toolsSDK 다운 후 압축 해제 터미널의 경로 이동 경로..
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEdND1%2FbtstwlaH3ba%2FXX8svQNmZp6ntILkrQNknK%2Fimg.png)
Qt/Setup & Tips 2023. 9. 8.
Qt, Android 환경설정(4) - 에뮬레이터 설정
*에뮬레이터: (시뮬레이션 가능한) 가상 장치 안드로이드 스튜디오 RAM 설정 설치 할 때 할당될 RAM 크기를 설정 할 수도 있다. 전체 설정에서 설정 할 수 있다. 가상 디바이스마다 설정 할 수 있다. 전체 설정에서 RAM 설정 가상 장치마다 RAM 설정 특정 안드로이드 디바이스를 설정 할 수 있다. 가상 장치 만들기 특정 안드로이드 디바이스를 만들어 설정 할 수 있다. 삼성 스마프폰 가상장치 만들기 삼성 Galaxy Emulator Skin | Samsung Developers 다운로드 링크에서 다운받고, 삼성 Galaxy Emulator Skin 적용 방법 링크 참고하여 만들면 된다. Qt 에서 추가된 가상 장치 적용 방법
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYEkGi%2FbtstxlA0aOa%2FPqPLnHe885oMF7881D3DE1%2Fimg.png)
Qt/Setup & Tips 2023. 9. 8.
Qt, Android 환경설정(4) - 에뮬레이터 설치
개발된 어플을 확인하는 방법 연결된 스마트폰 *가상 에뮬레이터 Android Studio의 가상 에뮬레이터에서 내가 만든 어플의 기능을 확인 할 수 있다. 가상 에뮬레이터는, 개발중인 PC에서 독립적인 스마트폰 실행 환경을 만드는 것이다. 스마트폰을 하나 실행시키는만큼 리소스를 차지한다. 컴퓨터 사양, 특히 RAM이 많아야 한다. *에뮬레이터: (시뮬레이션 가능한) 가상 장치 안드로이드 스튜디오 설치 다운로드 페이지 링크 설치 공식 가이드(Window, Mac, Linux) 설치가 완료되면 Qt에서 자동으로 연결되어 선택 가능하다.
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfIKn7%2Fbtstlj4tiBx%2FduIxeYkK7iD5juxhGKfySK%2Fimg.jpg)
Qt/Network 2023. 9. 6.
스트림, 파일 디스크립터, 버퍼
Stream을 사용하는 이유 프로그램은 일반적으로 누군가로부터 정보를 전달 하거거나, 누군가에게 정보를 전달받는 작업의 연속이다. 정보를 주고받기 위해 Computer는 수많은 입출력(I/O) 장치와 연결된다. Keyboard, Mouse, Monitor, Printer 등 각각 입출력 장치 종류나 각각의 제조사들마다 입출력 방법을 별도로 만드는 것은 불가능하다. 마치 C++ 언어가 CPU 제조사마다 다른것과 같다. 마치 애플이 8핀, 12핀 단자 독자 규격을 사용하는 것과 같다. Stream은 여러 입출력 장치들 간에 데이터를 읽고 쓰는 통일된 방법이다. 입출력 장치의 종류에 상관없이, OS와 Stream 표준으로 입출력 기기간에 데이터를 주고받는다. 장치가 달라지더라도, 항상 똑같은 절차를 통해 데이..
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrZ9ol%2Fbtss9A8iOMJ%2FKkob5ETrikbpuEpd0Ynce0%2Fimg.png)
Qt/Network 2023. 9. 6.
Qt Network 예제4 - 파일 전송
예제 실행 접속, 대화 서버에서 특정 대상에게 메시지 전송 파일 전송 예제 파일 소스 코드 Server #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include #include #include #include namespace Ui { class MainWindow; } // [ex.02] class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; QTcpServer* m..
Qt/Network 2023. 9. 4.
Singleton Pattern(싱글톤 패턴)
네트워크를 배우는 단계에서 DB, Socket 의 객체를 1개만 생성되도록 강제하고 모든 GUI 객체에서 공유하는 패턴을 기반으로 로직 구현하는 연습한다. Singleton Pattern(싱글톤 패턴) : 클래스의 인스턴가 1개만 생성되도록 강제하는 방식 : 1개의 인스턴스를 모든 객체에서 공유하는 방식 1. 기본 싱글톤 1.1. 기본 개념 #include class Singleton { private: // new 를 사용한 instance 생성을 제한되도록 생성자를 private로 선언 한다. Singleton(){}; ~Singleton() {}; Singleton(const Singleton& other); // 전역 선언, 생성 순서에 기준이 없다. static Singleton instance..
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXMH2P%2FbtssIng1B9N%2FP2zco0tTbjxMZjM9xghl3k%2Fimg.png)
Qt/Network 2023. 9. 1.
Qt Network 예제2
예제 실행 접속 접속 종료 예제 파일 Serv. 소스 코드 main.cpp #include #include "widget.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); // [ex.01] Widget w; w.show(); return a.exec(); } widget.h #ifndef WIDGET_H #define WIDGET_H #include #include "chatserver.h" namespace Ui { class Widget; } // [ex.02] // Widget 클래스 : QWidget 상속 class Widget : public QWidget { Q_OBJECT public: // [ex.02.1] explici..
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6eSql%2FbtssimH6zEz%2FHdm9ThtMu0e10r9ZzPZv61%2Fimg.png)
Qt/Setup & Tips 2023. 8. 27.
LNK1181: cannot open input file 'debug\main.obj'
Shadow build Qt 는 Shadow build 라는 기능으로, 동일한 소스 코드를 필요에 따라 다양한 스타일의 Qt를 빌드 하도록 옵션 기능을 지원한다. 문제는, Shadow build 기능을 체크하고 경로가 고정되어 있으면, 프로젝트 소스코드 경로에 빌드 파일이 생성되지 않고, 지정된 절대 경로에 빌드 파일이 생성된다. 실행시 빌드된 파일의 경로를 찾지 못하여 문제가 발생한다. 이슈 LNK1181: cannot open input file 'debug\main.obj' The build directory is not at the same level as the source directory, which could be the reason for the build failure. 해결법 1 Sh..
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUKPuU%2FbtsrRQbVdc4%2FytA7z3XUdsa8SK7TtgOyz0%2Fimg.png)
Qt/Network 2023. 8. 24.
Qt Network 예제1
예제 실행 예제 파일 (주석 있음) 예제 파일 (주석 없음) Serv. 소스 코드 main.cpp #include "widget.h" #include int main(int argc, char *argv[]) { QApplication a(argc, argv); // [01] Widget w 위젯 객체 생성 Widget w; w.setWindowTitle("TCP 서버"); w.show(); return a.exec(); } widget.cpp #include "widget.h" #include "ui_widget.h" #include #include // [02.1] Widget class 생성자 실행 Widget::Widget(QWidget *parent) : QWidget(parent), ui(ne..
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC48xT%2FbtsrIcUbJUB%2FF3ZXK7bthCdlB8xYLo1Grk%2Fimg.png)
Qt/Network 2023. 8. 24.
Qt Network Module 추가
Qt 에서 제공하는 네트워크 모듈을 사용하기 위해서는 다음과 같이추가해야 한다. qmake를 사용하는 경우 프로젝트 파일(Project_Name.pro) QT += network CMake를 사용하는 경우 CMake파일(CMakeLists.txt) find_package(Qt6 REQUIRED COMPONENTS Network ) target_link_libraries(01_NetworkCmake Qt${QT_VERSION_MAJOR}::Network) 참고 CMake의 경우, 공식 홈페이지에서 아래와 같이 가이드하지만, 오류가 발생할 수 있다. find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6:..
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIOEmy%2FbtsrR4oqPYq%2Fv9IEEgNlMZKWMYG8rb3a6K%2Fimg.png)
Qt/Network 2023. 8. 24.
Qt Network (Signal & Slot)
일반적인 C/C++ 네트워크 프로그래밍 학습은 Socket API 와 Thread를 사용합니다. Qt C++ 에서는 Socket API보다 편리한 Qt Network Modeule을 사용할 수 있고 Thread 대신 Signal 과 Slot 을 사용할 수 있기 때문에 보다 쉽게 네트워크 응용 어플리케이션을 구현할 수 있습니다. 1. Thread 이해 1.1 Program Program은 빌드가 끝난 후 저장 장치에 저장되어 있는 명령어 덩어리로, 메모리에 올라가 있지 않은 상태입니다. 스마트폰을 사용할 때, 스토어 같은 곳에서 앱을 설치하게 되는데 이것이 프로그램입니다. 프로그램을 설치하면 바로 실행이 될까요? 아닙니다. 마우스로 더블 클릭하거나 손으로 터치를 해야 실행이 되는 것이죠. 이렇게 아직 실행..
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2zMbF%2FbtsrDB7phFL%2FcxKj6rkthxeNGaNMD6CLT0%2Fimg.png)
Qt/Network 2023. 8. 24.
Qt Network Module
네트워크 프로그래밍이란? 프로그램은 일반적으로 정보를 전달 하거거나, 전달받는 작업의 연속입니다. 입출력의 대상은 화면, 키보드, 파일, 데이터베이스, 다른 프로그램 등 다양합니다. 네트워크 프로그래밍은 네트워크를 대상으로 입출력 하는 프로그래밍을 의미합니다. "서로 다른 두 대 이상의 컴퓨터"가 네트워크를 통해 데이터를 주고받는 입출력 프로세스를 구현하는 것입니다. 서로 다른 컴퓨터 간에 정보를 주고받거나, 한 컴퓨터가 다른 컴퓨터에게 데이터를 전달하고, 명령을 내리는 방식으로 메일 서비스, 검색, 메신저 등의 네트워크 프로그램이 동작합니다. 소켓이란? 소켓이란 네트워크를 통해 데이터를 주고받는 방법을 통신 규약에 맞게 함수로 구현해 놓은 것입니다. 이 함수들은 소켓의 생성, 연결, 데이터의 송수신 등..
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtfoKA%2FbtsrDEI3aDV%2FOci5jkvncsKBoetHTqO5K0%2Fimg.png)
Qt/Setup & Tips 2023. 8. 18.
QML module not found
Issue QML module not found Examples > Application Examples >Coffee Machine Project Solution CMakeLists.txt 에 project's Imports 경로 추가 add the following command to the CMakeLists.txt file to set the QML import path CMakeLists.txt 에 Imports 경로 추가 # Directories where Qt Creator can find QML files. # (Not needed for builds, but makes Qt Creator code completion happy.) list(APPEND QML_IMPORT_PATH "/ho..
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGMGQ1%2Fbtsq8LpxbAb%2FgkQ9frhJkKzXok0aNSH8dk%2Fimg.png)
Qt/Setup & Tips 2023. 8. 14.
Qt 한글 입력시 fcitx5 이슈
fcitx5 을 사용한 한국어 입력의 경우 Qt 등의 프로그램에서 한국어 입력이 불가능한 경우가 있다. QtCreator의 경우, 입력 기능을 우분투의 라이브러리 path를 사용하지 않고, Qt에서 지정된 path를 사용한다. 1. QtCreator에 fcitx5 입력기 라이브러리 경로 설정을 별도로 해주어야 한다. cd (QT 루트 폴더)/{QT 버전}/gcc_64/plugins/platforminputcontexts ln -s /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so libfcitxplatforminputcontextplugin.so 2. fcitx5 사용하는 것 대신..
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpjyse%2FbtsrvXbC2ha%2F4kMfxloknYCLbtXRPYPBJ1%2Fimg.png)
Qt/Qt Basic 2023. 8. 14.
Qt 2
① Qt 개발 분류 Qt는 GUI 개발은, Qt Widgets 또는 QML(Qt Modeling Language) 을 방식으로 나뉜다. Designer 를 활용한 위지위그(WYSIWYG) 개발과, Editor 에서 하드코딩 작업으로 나뉜다. Qt UI 개발 Widgets, Quick 차이 링크 1. Widgets - Qt Editor 책 Ch. 3.1 Qt GUI Widgets에서 예제로 설명되어 있는 부분이다. 2. Widgets - Qt Designer 책 Ch. 3.5 Qt Designer 를 이용한 GUI 설계 및 제작 에서 예제로 설명되어 있는 부분이다. https://youtu.be/LnVjI0I7cKs 3. QML - Qt Editor https://youtu.be/M_d0txbIeq8 4...
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCnFlE%2FbtsqKiAB5k7%2FxnUPzMySEfnmvea70brWB1%2Fimg.png)
Qt/Qt Basic 2023. 8. 11.
Qt 1
Qt 란 MS Windows, MacOS, Android, iOS, Embedded Linux, QNX, 등에서 모두 호환되는 크로스플랫폼 프레임워크로 운영체제마다 프로그램을 따로 개발하지 않아도 된다. Qt는 C++를 주로 사용하지만, 파이썬, 루비, C, 펄, 파스칼과도 연동된다. 자동차, 의료, 멀티미디어, 네트워크등 다양한 산업분야에서 SW를 개발할 수 있습니다. Qt 가 사용된 프로그램 이동 링크 사람인 Qt 모집 공고 링크 잡코리아 Qt 모집 공고 링크 Qt 커뮤니티 링크 Qt Creator Qt 프레임워크 개발을 위한 통합 개발 환경(IDE) 기본적으로 GCC 64bit c++과 cmake를 지원 Window에서는 Qt 설치 후, Visual Studio(IDE) 와 연동 가능 QML Qui..
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy5pKq%2FbtsqJSCclg0%2Fftd4PY36jwc4SbA14CPUIK%2Fimg.png)
Qt/Setup & Tips 2023. 8. 10.
<Win> Qt 설치
1. Qt 설치Qt download Link로 이동하여 Online Installer 를 다운받는다. (Qt는 5.15부터 Online Installer로만 Qt 설치가 가능하다.) ⏩ official_releases/ ⏩ online_installers/ ⏩ qt-unified-windows-x64-online.exe ⏩ 미러 사이트를 설정하여, Online Installer 를 실행한다. 1. Online Installer가 설치된 경로로 이동하여, 주소창에 "cmd" 를 입력하여 터미널을 실행시킨다. 2. 미러 사이트에서 가까운 위치를 찾아, Online Installer 를 실행 옵션으로 입력한다. qt-unified-windows-x64-4.6.1-online.exe --mirror..
![](http://i1.daumcdn.net/thumb/C400x300/?fname=https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbvnn1X%2FbtsqM8xqe6F%2FvvvlgTYxcFEJvyGTe85wCk%2Fimg.png)
Qt/Setup & Tips 2023. 8. 9.
<ubuntu> Qt 설치
1. 사전작업 - 1 g++ 설치 Qt 설치 전에 반드시 g++을 설치해야 함 sudo apt-get install g++ - 2. 각종 라이브러리 설치 sudo apt update && upgrade -ysudo apt-get install build-essential libgl1-mesa-dev - 3. Qt 사이트로 이동 - 4. 다운 받은 파일이 있는 곳으로 터미널 경로 설정 보통 Downloads 폴더에 해당 실행 파일을 다운 받았을 것이다. cd ~/Downloads - 5. run 파일 권한 확인 ls -tlr Qt 설치 파일의 권한에, x 가 없는 상태가 출력되하면 아래 명령어 실행 (파일명, 특히 버전 정보를 잘 확인해서 입력하거나, *(와일드카드)를 사용한다.) chmod a..
![로딩중](http://t1.daumcdn.net/tistory_admin/static/mobile/m640/img_loading.gif)