본문 바로가기

Programming

(224)
[QT, QML] button, loader 사용 # QT Version : 5.12 # QT Creatpr Version : 4.11 # Project name : project01 My_Github_Link 간단히 button을 눌러서 간단히 하위 Item을 전환하는 작업을 해봤다. 일단 결과물... 간단히 위에 버튼 3개 만들고 각 버튼이 눌리면 해당 탭에 맞는 qml을 로드 하도록 만들었다. import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.12 Window { visible: true width: 640 height: 480 title: qsTr("Hello World") Item{ x : 0 y : 0 width: parent.width height: 50 But..
[QT, QML] Empty Project 프로젝트 생성 Qt Quick Application 으로 만든다. 프로젝트명을 정한 후 Bulid System을 qmake를 선택한다. 버전은 설치된 버전으로 진행 번역은 패스 kit은MSVC2017 64bit와 MinGW 65bit 선택 패스 기본 프로젝트를 생성하면 다음과 같은 파일 구성이 된다. [projectname].pro // 프로젝트 설정 파일 qml.qrc // qml 파일 (Qml Resource Collection File) main.cpp // main cpp file main.qml // main qml file 간단하게 Hello World를 띄워본다. Window { visible: true width: 640 height: 480 title: qsTr("Hello World")..
QT, QML Reference # QT Version : 5.12 # QT Creatpr Version : 4.11 예전 연구실서 간단히 Qt를 이용해서 개발했었다. openGL + GUI 메뉴가 필요해서 사용했는데 그때 참... 사용성도 떨어지고 기본 UI도 이쁘지 않아서... 더 이상 공부할 맘도 않생겼었지... 그런데 최근 회사에서 Qt를 이용해서 개발하다 보니 GUI는 QML을 이용해서 개발을 하더라... QML은 문법이 요즘 유행하는 웹 페이지 만들 때와 유사하다 javascript 문법과 CSS 섞은 듯한 문법을 지원한다.(CSS에 javascript를 지원한다고 해야 하나..?) 또한, Qt는 cross compile을 지원해서 플랫폼에 상관없이 개발할 수 있다는 장점도 있으니... 생각보다 현업에서는 많이 사용하는 것으..
modern C++ 스마트포인터 unique_ptr Smart Pointer의 unique_ptr 사용하기 포인터 대입 복사 안됨. 소유권 이전시 move() 사용 unique_ptr로 할당한 메모리는 reset()으로 초기화, delete로 초기화시 에러 #include #include using namespace std; class Point { int x, y; public: Point(int _x, int _y) : x(_x), y(_y) { cout
modern C++ begin/end begin(), end() 함수 사용 #include #include #include #include using namespace std; template void show (T& c) { auto p1 = begin(c); auto p2 = end(c); while (p1 != p2) { cout
modern C++ noexcept c++17 #include using namespace std; int func1() noexcept // { throw 1; // error, call terminate() } int func2() noexcept(false) { throw 1; } int main() { try { // func1(); // terminate() func2(); } catch(...) { cout
modern C++ using 사용법 #include using namespace std; // 1. type alias using DWORD = int ; using FP = void(*)(int); // 2. template alias template class Point { T x, y; }; template using PT = Point; // 3. 템플릿 인자 고정 template using Duo = pair; template using I_Duo = pair; // 4. 복잡한 문법 단순화 template using remove_pointer_t = typename remove_pointer::type ; int main (void) { DWORD n ; // int n FP p ; // void(*p)(int) Point p1..
modern C++ static_assert c++ 11에서 추가 컴파일 타임에서 주어진 식이 false면 메시지 출력 & 컴파일 종료 변수는 사용 못함(중간에 값 변경 가능성이 있음) #include using namespace std; int main (void) { static_assert( sizeof(void*) == 4 , "32bit"); static_assert( sizeof(void*) == 8 , "64bit"); } 빌드 환경이 32bit인지 64bit인지 확인 가능