본문 바로가기
Qt QML - Cannot override FINAL property 에러 해결 Qt QML - Cannot override FINAL property 에러 해결 Qt QML 에러 메시지Qt QML - Cannot override FINAL property 분명히 외부에 선언된 Item에서 가져온 요소들을 사용하는 데, override를 할 수 없다는 에러 메시지가 뜬다. 현재로썬, Qt QML의 버그라는 판단이 선다. 외국 블로거의 글들을 찾아봐도 이해할 수 없다는 의견이 주를 이룬다. 나도 이해가 되질 않는 에러이기도 하다. 우선은 내가 이 에러 메시지를 보게 된 경위를 살펴본다.나는 Item 요소를 외부에 선언하고 해당 property를 불러와 사용하려 했다. 그러나 제목에도 보이는 "Cannot override FINAL property"라는 메시지가 나를 만나러 와버렸다. .. 2018. 9. 6.
[Qt Qwt 강좌] ShapeItem 삭제 예제 (메모리 누수 방지) [Qt Qwt 강좌] ShapeItem 삭제 예제 (메모리 누수 방지) Qt qwt 요소를 제대로 삭제하지 않으면 아래처럼 속성들이 겹칩니다. 아래 그림에서 속성을 제대로 삭제했다면 한 색깔의 그래프만 보여야 합니다. 하지만, 모든 색상의 그래프가 겹쳐있네요. 그리고 저 상태로 프로그램을 종료하면 메모리 누수가 일어납니다. 그러니, 아래 소스를 소멸자에 넣어두세요. 그래야 메모리 누수와 그래프 겹침 현상을 막을 수 있습니다. 12345678910/** 기존의 ShapeItem 삭제 */QwtPlotItemList list = plot_goods_->itemList(); for (QwtPlotItemIterator it = list.begin(); it != list.end(); it++) { if((*i.. 2018. 5. 6.
Qt Folder Dialog (QFileDialog example, 폴더 다이얼로그) Qt Folder Dialog (QFileDialog example, 폴더 다이얼로그) Qt4에선 따로 폴더 다이얼로그를 제공하지 않아 QFileDialog를 이용해 Folder Dialog처럼 사용해야 합니다. 1QString save_lot = QFileDialog::getExistingDirectory();cs 위 코드를 실행하면 아래처럼 폴더 다이얼로그가 생성됩니다. QFileDialog를 대부분 아래처럼 사용할 겁니다. 123456789QFileDialog dialog(this);dialog.setFileMode(QFileDialog::Directory); if (QDialog::Accepted == dialog.exec()){ QString location = dialog.directory().. 2018. 5. 4.
Qt 그래프 라이브러리 QWT, QRectF 에러 해결 Qt 그래프 라이브러리 QWT, QRectF 에러 해결 QWT에서 plot을 꾸밀 때 아래처럼 희한한 상황이 발생할 수 있습니다. 해결 방법은 의외로 간단한데요. QRectF가 지역 변수라면 멤버 변수로 옮겨주세요.함수 내부에서 선언된 객체는 힙 영역에 존재하다 함수 콜이 끝나면 사라져서 그런가 봐요. 2018. 2. 15.
[Qt 프로그래밍] Qt QWT 속성 이해하기 (Graph) [Qt 프로그래밍] Qt QWT 속성 이해하기 (Graph) Qt 프로그래밍을 편하게 돕는 라이브러리가 하나 있습니다. 윈도우의 OpenGL에 맞먹는 Qt의 QWT입니다. QWT는 버전 5부터 지원되는데 2D 그래픽 라이브러리 중에선 가장 편합니다. Qt 프로그래밍할 때, 그래픽 라이브러리 고민하지 마시고 무조건 QWT 선택하세요. QWT만큼 편한 Qt 라이브러리가 또 없습니다. 이 포스트에선 항상 헷갈리는 qwt의 속성들을 설명합니다. (Qt 프로그래밍 qwt는 qt에서 사용할 수 있는 그래픽 라이브러리 중 최고입니다.) 아래 그림을 살펴보죠. 가운데 중앙 - setTitle() : Qwt Plot를 띄웠을 때, Plot의 이름 설정.가운데 왼쪽 - setAxisTitle() : 왼쪽 영역 이름 설정(.. 2017. 12. 11.
QString to LPCTSTR 변환 소스, 유니코드 unicode 한글 호환 C++ Qt 문자열 변환 예제 QString to LPCTSTR Qt와 MFC 또는 Qt와 C++을 응용할 때 발생하는 문제입니다. QString만 쓰는 환경이라면 상관없지만, LPCTSTR 같은 다른 자료형을 쓰는 환경이라면 변환이 생각만큼 잘 되지 않죠. ▶ QString to LPCTSTR 응용 개발환경 비주얼스튜디오 2013Qt 5.3.2유니코드 환경 32, 64 비트 릴리즈 / 디버그 모드 위와 같은 환경에서 QString을 LPCTSTR로 변환하는 소스입니다. 12345QString qt_string = "Test"; to LPCTSTR mfc_string = qt_string.toLocal8Bit().constData();cs QString = QStringQString.toLocal8Bit.. 2017. 11. 21.
[형변환 Qt] QByteArray to Unsigned Char 형변환 [형변환 Qt] QByteArray to Unsigned Char 형변환 형변환은 어떤 언어를 다루건 필연적으로 개발자 앞에 나타난다. 어떤 언어든 (형변환이 일어나는) 퍼포먼스 향상을 위해 기본 라이브러리 보다 고정된 크기의 배열을 사용해야 하는 경우가 있다. Qt도 예외는 아닌지라 컨테이너 중 하나인 QByteArray를 char 배열로 형변환해야 할 상황이 존재한다. QByteArray는 QSerialPort()나 QTcpSocket()을 이용해 패킷을 읽어 들인 후 반환하는 기본 자료형이다. 두 라이브러리 모두 connect()에서 readyRead() 시그널을 통해 패킷을 읽어 들인 후 형변환한다. QByteArray를 unsigned char로 형변환하는 코드는 이런 통신 환경에서 유용하게 사.. 2017. 9. 26.
[Qt GUI 프로그래밍] 트리뷰 사용 예제, QTreeView와 QFile 응용 [Qt GUI 프로그래밍] 트리뷰 사용 예제, QTreeView와 QFile 응용 Qt QTreeView와 QFile을 함께 사용한 GUI 프로그래밍 예제입니다. 우선 결과 화면부터 보여드릴게요. 제가 소개하는 소스는 특정 폴더의 ini 파일만 읽어 ini 내용을 트리뷰로 표현하는 것입니다. GUI 프로그래밍에서 자주 사용하는 것 중 하나인 트리뷰(QTreeView)는 부모와 자식 노드로 구성되는데요. ini 파일 이름은 부모 노드, ini 파일 내용은 자식 노드로 구성되어 있습니다. .ini 부모 노드(파일 이름) 아래에 자식 노드(ini 파일 내용)가 보이시죠? 아래 소개하는 소스는 위 Qt GUI 프로그래밍 트리뷰 소스입니다. 1234567891011121314151617181920212223242.. 2017. 9. 9.
Qt QMainWindow: No such file or directory Qt 에러 - FATAL ERROR : QMainWindow: No such file or directory Qt에서 GUI 프로그램을 제작할 땐, 항상 QMainWindow 클래스를 상속받는 과정이 필요합니다. 만약 아래처럼, QMainWindow 클래스를 참조하지 못할 경우 .pro 파일을 반드시 살펴봐야 하죠. 이건 Qt의 장점이자 단점이기도 한데, .pro 파일에 사용할 라이브러리를 기록해 두면 가독성이 높아지는 장점이 있습니다. 그렇지만 이곳에 라이브러리를 기입하지 않으면 아예 사용하질 못합니다. 대게 QMainWindow를 사용하지 못하는 경우도 이런 상황과 같아요. 일단, 에러 메시지부터 보시죠. In file included from /home/ubuntu/pcl/example/qt_vis.. 2017. 7. 26.
QSerialPort Qt 시리얼 5.1부터 추가 (Serial 예제 소스) QSerialPort Qt 시리얼 5.1부터 추가 (Serial 예제 소스) Qt 이전 버전엔 QSerialPort 라이브러리가 없어서 QExtSerialPort란 타사 라이브러리를 이용하는 게 일반적이었습니다. 그렇지만 5.1.0이 릴리즈되면서 QSerialPort(Qt 시리얼) 라이브러리는 Qt의 일부가 되었습니다. QSerialPort Qt 시리얼 라이브러리는 Qt4와 Qt5 이후를 지원하며 UNIX, 윈도우, 리눅스, MAC OS X, POSIX 32비트, 64비트도 지원합니다. 윈도우 CE와 심비안은 부분적으로 지원하나 Qt5 자체가 이들을 지원하지 않기에 향후 별도의 라이브러리가 추가될 가능성은 작습니다. Using ItQt 시리얼은 QtSerialPort와 QSerialPortInfo 클래스.. 2017. 7. 1.
CMake PCL Qt5, CMakeLists 구성 방법과 예제 CMake PCL Qt5, CMakeLists 구성 방법과 예제 PCL의 3rd party 라이브러리 중 하나인 vtk(visualizer toolkit)은 2016년 현재 Qt 4.8.4까지 지원하고 있다. Qt가 5.6까지 나온 것을 고려하자면 정말 너무할 정도로 호환성이 떨어진다. Qt가 버전 5부터 급격히 변화한 것은 사실이나, 그렇다고 해서 아직도 지원을 미루고 있는 현 상황은 내심 불만이다. Qt5 부터 지원되는 다양한 라이브러리를 PCL에선 현재 사용할 수가 없다. 만약 각종 뷰어를 안 쓴다면 PCL을 사용할 수 있으나, 뷰어가 필요하다면 Qt의 버전을 4.8.4까지 낮춰야 한다. 이런 결론을 얻을 수 있었던 건, 내가 Qt5를 이용해 각종 삽질을 해봤기 때문이다. 내가 실수한 부분도 있을 .. 2017. 6. 28.
Qt undefined reference to 'vtable for...' 에러 해결 방법 Qt undefined reference to 'vtable for...' 에러 해결 방법 아래와 같은 메시지 들이 뜰 경우의 해결책입니다. 1. undefined reference to 'vtable for...'2. undefined reference to vtable for mainwindow'3. undefined reference to vtable for class4. undefined reference to vtable for constructor 이건, moc 파일이 생성되지 않아 발생하는 경우입니다. .pri 또는 .pro에 변경된 사항들이 반영되지 않았다는 의미죠. 변경이란, 파일의 추가, 삭제, 이름 변경 등 모든 사항을 뜻합니다. 간단하게, Qt Creator에서 프로젝트 우클릭 후 .. 2017. 6. 15.