본문 바로가기
Qt Json, 만들기, 읽기, 쓰기, 수정, 예제 파싱 소스 Qt Json, 만들기, 읽기, 쓰기, 수정하기 예제 파싱 소스 이 포스트에선 Qt에서 JSON 파일을 만들기, 읽기, 쓰기, 수정하는 4가지 기능을 다룹니다. 함수는 각각 Make(), Read(), Write(), Modify()입니다. 일단 QJson 전체 소스부터 하나씩 살펴보겠습니다. Header 123456789101112131415161718192021222324252627282930313233#ifndef JSONCONTROLLER_H#define JSONCONTROLLER_H #include #include #include #include class JSONController{ static const QString kFileExam; public: JSONController(); ~JSO.. 2017. 6. 4.
Qt, sudo apt-get update, ARM 보드와 우분투 업데이트 (포팅 후) Qt, sudo apt-get update, ARM 보드와 우분투 업데이트 (포팅 후) 어느 특정 보드에 우분투를 포팅할 일이 생길 수 있습니다. 그리고 Qt를 사용하는 분들이라면 QtCreator도 당연히 설치하시겠죠. 그렇지만, Qt에서 사용하는 라이브러리는 우분투 기본 커널에 모두 포함되어 있지 않습니다. 별도로 설치를 해줘야 한다는 뜻입니다. 아니면, 포팅할 커널에 미리 Qt용 라이브러리들을 설정해 놓아야 합니다. 제 경우엔 커널을 마음대로 편집할 능력이 없어서 우분투만 포팅한 이후 Qt를 설치했습니다. 그리고 Qt용 라이브러리를 update - upgrade 했죠. 아래 메시지는 Qt Creator을 실행할 때 나오는 것으로 앞서 설명했다시피, Qt용 라이브러리가 없어서 발생하는 것입니다. 12.. 2017. 4. 29.
Qt qmake.conf' has modification time .. s in the future 에러 해결 Qt qmake.conf' has modification time .. s in the future 에러 해결 Qt Creator에서 '...qmake.conf' has modification time ,,,,,, s in the future 과거의 시간으로 현재의 소스 코드를 컴파일할 수 없다는 뜻입니다. 제 경우엔 RTC가 없는 우분투 포팅 보드에서 확인했습니다. RTC가 없다 보니 현재 시각이 저장되질 않아 재부팅 후엔 2000년 1월 1일 오전 9시로 초기화되었었죠. 이런 상태에서 컴파일을 시도하면 여지없이 위와 같은 에러가 발생하며 빌드가 되질 않았었죠. 시스템의 날짜를 올바르게 바꿔주면 해결됩니다. 특히, 저처럼 RTC가 없는 보드에서 Qt Creator를 다룰 땐 시간 확인 꼭 하세요. 뭐... 2017. 4. 28.
Qt TCP 통신 연결 끊김 상태 확인: QTcpSocket 소켓과 랜선 뽑힘 Unplugging ethernet (이더넷 연결 끊김)Qt에서 tcp ip 소켓을 사용하다보면 끊어진 경우를 확인해야할 상황이 발생합니다. 굳이 Qt가 아니더라도 언제 어디서나 서비스 제공자는 무조건 통신 상태를 확인해야 합니다만, Qt 프로그래밍에선, 플러그가 뽑힌 경우를 체크하기 까다롭습니다. 왜냐면 QAbstractSocket 클래스가 제공하는 ConnectedState는 tcp ip 연결된 이후에 물리적인 플러그 뽑힘 현상을 알려주지 않습니다. 슬프게도, Qt가 제공하는 그 어떤 소켓 클래스들도 물리적인 플러그 Unconnected를 확인하질 못합니다. 그래서 돌아가는 방법을 찾아야 합니다. Simple Main Code (이더넷 연결 끊김 기본 소스)우선, 간단한 tcp ip Socket Pr.. 2017. 4. 3.
Qt QWT ubuntu 설치 방법 - 리눅스 우분투 14.04 리눅스 QWT 설치 환경Linux Ubuntu 14.04 32비트Qt 5.3.2qwt 6.1.1리눅스 qwt 설치하려면 필요한 패키지들이 있습니다. 관련된 우분투 패키지 참조 사이트는 바로 아래 링크입니다. 링크 - One Command To Install All Ubuntu Packages for Qt 5 Build [클릭] sudo apt-get install \g++ ruby gperf bison flex sqlite libsqlite3-dev libfontconfig1-dev \libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev \libxrender-dev libxcb1-dev libx11-xcb-dev libxcb-glx0-dev l.. 2017. 3. 27.
Qt Creator 디버깅툴 cdb 설치 연동 방법 (windbg 다운로드) 윈도우에서 Qt를 사용할 때 필요한 것 중 하나가 cdb입니다. 비주얼 스튜디오란 툴은 원래 강력해서 따로 설치해줄 것이 없지만, Qt Creator은 그렇지 않아요. 그래서 윈도우 디버깅하려면 뭔가를 설치해야 합니다. 그게 바로 Qt Creator cdb 이것입니다. 먼저 Debugging Tools for Windows를 설치합니다. 1. 다운로드 1 - WinDbg Quick Links [클릭]위 링크로 이동하면 멋없는 페이지로 이동하는데, 그곳에서 아래 빨간 박스 안의 링크를 눌러 실제 다운로드 사이트로 이동하세요. 스크롤을 조금 내리면 설치 파일 링크가 보이는데, 이곳은 사용자 환경에 따라 동적으로 생성되는 페이지라 제가 캡처한 아래 화면이 일정하진 않아요. 사용자마다 다릅니다. 윈도우7에서 Q.. 2017. 3. 6.
Qt Add-in 1.2.4 에러, 80070002 (Qt 자체 버그) Qt Add-in 1.2.4 에러, 80070002 (Qt 자체 버그) 구동 환경OS - 윈도우7 64bitTool - Visual Studio 2012Qt - Qt 5.4 + Qt Add-in 1.2.4 에러 메시지'Qt Add-in 1.2.4' 추가 기능을 로드하지 못했거나 예외가 발생했습니다.오류 메시지: 지정된 파일을 찾을 수 없습니다.오류 번호: 80070002 Qt Add-in의 추가 기능 로드 실패는 Qt 자체의 버그입니다. 위와 같은 사양에서 발생한 에러로, 딱히, 어떤 해결책이 있는 건 아닌 것으로 판단됩니다(2015년 현재).그러한 판단을 할 수 있는 건 아래의 참조 사이트를 방문했기 때문입니다. 참조 1 - Addin not visible in Visual Studio 2012참조 2.. 2017. 2. 26.
[크로스플랫폼 언어 Qt] Cross 컴파일 6가지 (윈도우 <-> 리눅스) [크로스플랫폼 언어 Qt] Cross 컴파일 6가지 (윈도우 리눅스) ※ 크로스 컴파일 작업 환경 Windows7 64 bitVisual Studio 2012, Qt Creator 2.5.2Qt msvc 2012, opengl-5.3.2 (x86) Ubuntu 14.04 32bitQt Creator 2.5.2gcc 4.8.2 Qt는 크로스 플랫폼 환경에 어울리는 대표적인 개발 언어입니다. 제 경험상 소스 코드 자체가 100% 호환되기에 크로스 플랫폼을 타깃으로 제작되는 프로젝트라면 Qt를 선택하는 것이 좋다고 생각합니다. 저는 윈도우7 64비트 환경과 우분투 14.04 32비트 환경을 오가며 작업했습니다. 다만, 자동으로 크로스 플랫폼 환경을 완벽하게 구현할 수 없기에 몇 가지 수정 사항이 있습니다. 1.. 2017. 2. 23.
Qt 모니터 해상도 및 크기 얻기 (레이아웃 스크린 사이즈) Qt 모니터 해상도 및 크기 얻기 (레이아웃 스크린 사이즈) 참고 - Get physical screen size in Qt [클릭] Qt 모니터 이용 - 헤더 파일 1234567891011121314151617181920212223242526272829#ifndef WINDOW_H#define WINDOW_H #include class Window : public QWidget{ Q_OBJECT public: QWidget *canvas; QSlider *slider; QPixmap pixmap; private: qreal zoom; qreal pixels; qreal px_width; qreal px_height; qreal mm_width; qreal mm_height; public: Window(.. 2017. 2. 18.
Qt toUpper(), 대문자 소문자 변환 (Qt3, Qt5 대소문자 차이) Qt toUpper(), 대문자 소문자 변환 (Qt3, Qt5 대소문자 차이) 요즘은 대게 Qt 5.x를 사용합니다. 그래서 4.x 이하의 예제를 가져다가 사용하다 보면 에러가 종종 뜨지요. 이번 포스팅도 그런 경우와 연관된 내용입니다. Qt 3.0 버전 이하에선 아래와 같은 소스도 허용이 되었습니다. 12char char_tmp = message_[0].toUpper();message_[0] = char_tmp;cs 그렇지만 이제는 QString에서 char을 받아들이는 것도, char에 QString 데이터 일부를 할당하는 것 조차도 허용하지 않습니다. 위의 그림처럼 초기화할 수 없다는 에러 메시지를 볼 수 있습니다. 에러 메시지cannot convert 'QString' to 'char' in in.. 2017. 2. 12.
[Qt 프로그래밍] 그래픽 라이브러리 Qwt 소멸자 코드 [Qt 프로그래밍] Qwt 소멸자 코드 (그래픽 라이브러리) Qwt Plot를 사용한 뒤 메모리 해제를 완벽히 하려면 detachItems() 함수를 이용해야 합니다. Qwt User's Guide 6.1.2의 QwtPlotItem Class Reference 문서를 참조해 보면, plot 내부에 많은 아이템 클래스가 존재하는 것을 확인할 수 있습니다. 보시다시피 저 수많은 아이템 중, 실제 사용하셨던 아이템들은 detachItems()로 해제해 줘야 합니다. 그래야 메모리 누수가 발생하지 않아요. 해제 코드는 꽤 간단합니다. 해제할 아이템을 선택하고 true를 인자로 넘기면 됩니다. 12345678910111213141516171819202122plot_->detachItems(QwtPlotItem::.. 2017. 2. 5.
[Qt프로그래밍] 다국어 처리 Qt개발 (linguist qm 기초 사용 방법) [Qt프로그래밍] 다국어 처리 Qt개발 (linguist qm 기초 사용 방법) 1. 전반적인 사항 출처 - Qt 다국어 처리 [클릭] 전반적인 사항은 위의 출처를 참고하시면 됩니다. Qt프로그래밍에서 다국어 처리하는 이유는 Qt이기 때문입니다. Qt는 멀티플랫폼에서 구동되기에 이러한 특색을 잘 살리고 원래의 의도대로 Qt 개발하기기 위해서 반드시 다국어 처리해야 합니다. 2. 코딩 시 필요한 언어별 코드추가로 Qt프로그래밍 시 필요한 언어별 코드는 아래를 참고하세요. Qt개발할 때 필요한 주요 부분입니다. 3. 자료형 변환 문제Qt 개발한 시스템 언어 설정을 위해선 dpgk-reconfigure를 설치하고, /etc/environment의 default 언어를 수정해야 합니다. 123# nano /et.. 2017. 1. 12.