Qt Designer로 UI에 시그널/슬롯을 등록했는데 먹통이다.
시그널/슬롯에 뭔 문제가 있나, 혹은 내가 뭘 모르고있는건 아닌가 엄청 고민했는데
이제보니 ui를 바꾸어도 프로그램에 적용이 안된다.
qmake, build, clean 다 소용이 없었고
포럼글에서 말하는 Shadow Builds Unchecking은 msvc 에러를 뿜어댔다.
밥먹으면서 포럼글을 천천히 생각해보다가 문득 든 생각에 소스경로에 있는 ui_*.h를 모두 지워봤더니
잘 된다.
*.ui에서 자동생성되는 ui_*.h가 업데이트되지 않아 생기는 문제였다.
몇몇 글들을 보아하니, Qt의 고질적인 버그란 소리가 있다.
ui_*.h 파일을 없애고 Rebuild했더니, ui_*.h을 못찾겠다고 하는 에러가 나올 때도 있다.
멍청한 Qt Creator는 빌드 시 uic.exe를 자동으로 돌려주지 않는다.
cmd에서 일일이 파일을 생성해줄 수도 있지만 그건 스마트하지 않다
다행히 Shadow Build 상태라면(디폴트) 프로젝트 폴더 안에 있는 build용 폴더에 ui_*.h 파일이 생성되어있을 것이다.
이걸 프로젝트에 복사해서 사용하면 된다.
정리하자면
1. 프로젝트 폴더 내부의 ui_*.h를 지워라
2. Clean을 통해 Shadow Build 디렉터리의 ui_*.h를 지워라
3. Rebuild를 통해 Shadow Build 디렉터리에 ui_*.h를 만들고, 이를 다시 프로젝트 폴더 내부에 옮겨라
Qt 볼수록 참… 그렇습니다…
정말 감사합니다…. 계속 이유가 뭔지, 해결책은 뭔지 못찾아서 괴로웠는데 이거 보고 해결했습니다.