본문 바로가기

Qt

(6)
내장형설계 팀프로젝트 #2 - 블루투스를 이용한 지뢰찾기 대전 4학년 과목인 내장형설계의 팀프로젝트 MSN Game 에 있는 지뢰찾기를 PXA255 보드에서 BlueZ와 QT를 사용하여 구현하는 것입니다. 아래는 혼자서 테스트할때의 사진 ㅋ 게임 화면
QThread를 사용할 경우 터치가 안 되는 경우 QThread를 이용해서 프로그램을 만들었고 보드에 올렸는데 터치가 안되고 마우스 포인트가 보이는 상태에서 아무것도 안 움직일 때가 있습니다. 그건 설치할때 옵션을 주지 않아서 생기는 문제 입니다. ./configure -thread 로 옵션을 주어야 합니다. 보드에 따라서 여러 옵션이 필요합니다. 보드에 맞는 옵션과 함께 써주셔야 합니다. thread만 써주게 되면 다른 옵션이 설정되지 않을 거에요~
터치가 예민한 보드에서 사용할 클릭 가능한 ImageLabel 이미지가 많이 들어가고 각각 클릭 가능해야 하는 프로젝트를 진행하고 있습니다. QButton으로 모두 넣으니 리소스 문제로 보드에서 실행이 되지 않았습니다. 그래서 생각한게 QLabel로 대신하는 방법입니다. 문제는 QLabel 에는 clicked 라는 signal이 없어서 어떻게 클릭 여부를 체크해야하는 가? 입니다. QLabel이 상속받은 상위 클래스를 따라 올라가다 보면 QWidget 이라는 클래스가 있습니다. mouseMoveEvent(QMouseEvent*); mousePressEvent(QMouseEvent*); mouseReleaseEvent(QMouseEvent*); 아래 두개가 마우스 클릭과 관련된 이벤트 입니다. 사용하려면 QWidget을 상속받는 하위 클래스를 만들어야 합니다. QLa..
QT에서 undefined reference to `vtable 오류 클래스안에서 signals, slots를 정의하게 되면 Q_OBJECT 를 적어 줘야 합니다. Q_OBJECT를 사용하고 컴파일할때 undefined reference to `vtable 이와 같은 오류를 볼때가 있습니다. 검색을 해보니 virtual 함수를 정의해줘야 하는데 안해줘서 생기는 오류라고 합니다. 아무리 찾아봐도 오류가날 이유가 없습니다! 이럴때는 qmake를 다시 해주시고 make 해주시면 잘 됩니다. 이유는 저도 잘 모르겠네요 ^^; 아무래도 Q_OBJECT를 사용하면서 컴파일 옵션이나 라이브러리등이 변경되어서 그런게 아닐까..... 하고 혼자 짐작해 보네요.
signal, slot을 연결하는 connect 에서 오류 signal과 slot을 연결하는 connect 를 사용할때 컴파일은 성공하였으나 실행할때 sender 또는 receiver 를 못 찾는 경우가 발생할때가 있습니다. QObject::connect: No such signal Thread::setText(const QString&txt) QObject::connect: (sender name: 'unnamed') QObject::connect: (receiver name: 'frmTest') 이런 오류가 발생할 경우 정말 막막합니다..... 구글 검색을 통해 얻은 결과는 아주 간단한 것 입니다. 이런 오류는 매개변수가 있을 때만 발생하며 매개변수의 타입은 쓰고 이름은 쓰지 말아야 합니다. connect( &thread2, SIGNAL(setText(con..
QThread 사용시 컴파일 오류 QThread를 사용하여 컴파일을 하면 thread1.h:12: parse error before `{' token thread1.h:13: virtual outside class declaration 이와 같은 오류가 발생합니다. progen으로 생성한 .pro 파일을 열어서 CONFIG += thread 를 해주고 qmake 하시면 컴파일시 qthread로 인한 오류가 발생하지 않습니다.