2010-12-07 7 views
26

누군가가 Qt 디자이너에서 GUI를 이전에 작성 했으므로 일부 작은 부분 (예 : 버튼/기능 추가)을 수정해야합니다.Qt 디자이너가 GUI를 업데이트하지 않습니다.

전제 : 새 기능을 추가하거나 Designer에서 .ui 파일을 수정합니다. 편집 모드로 가서 .ui 파일의 xml 형식을 변경하는 것을 볼 수 있습니다.

문제점 : Qt를 빌드하고 실행할 때 .ui의 이전 버전이 표시됩니다. 기능 업그레이드). 모든 것을 청소하고 qmake를 실행했지만 아무 소용이 없었습니다.

왜 이런 일이 벌어 질 수 있는지에 대한 아이디어가 있습니까?

답변

7

.ui 파일을 변경하면 누군가 파일에 uic.exe을 실행하여 헤더 파일을 생성해야합니다. 예를 들어 MyWindow.ui이라는 창에 대해 ui_MyWindow.h이라는 파일이 생성됩니다.

다음은 응용 프로그램이 다시 작성 될 때 사용되는 내용입니다.

작성 방법이나 운영 체제를 지정하지 않으므로 도움을 받기가 어렵습니다. Visual Studio를 사용하는 경우 .ui 파일을 프로젝트에 통합하여 .ui 파일을 변경할 때 생성 된 모든 파일이 자동으로 재생성됩니다. .pri 파일을 사용하는 경우에도 마찬가지입니다.

어떤 경우

, 내가 실행됩니다 :

uic.exe -o ui_yourfile.h yourfile.ui 

사용중인 사람에 파일의 이름을 변경하십시오. uic.exe은 Qt bin 디렉토리에서 찾을 수 있습니다.

그런 다음 생성 된 헤더 파일을 얻은 후에는 빌드 디렉토리에있는 위치를 찾으십시오. 그럼 다시 지어 라.

2

나는 동일한 문제가 있었으며 빌드 디렉토리의 모든 Makefile을 삭제 한 다음 처음부터 다시 빌드하여 해결할 수있었습니다. Qt Creator에서 프로젝트 정리를 실행하면 어떤 이유로 파일이 삭제되지 않습니다.

63

"Projects"모드에서 "Shadow Build"를 비활성화했을 때도 동일한 문제가 발생했습니다.

UPD :이 답변 여전히 수신 upvotes는 2 가지 이유

  • 이 문제가 여전히 이후 거의 오년
+3

이것은 더 많은 표를 얻으실 가치가 있습니다! 제 의견으로는 이것이 답이 될 것입니다. – PascalVKooten

+1

이것은 나를 위해이 정확한 문제를 해결했습니다. 이 확인란의 선택을 취소 할 때까지 .h 파일이 XML에서 업데이트되지 않았습니다. – Joshua

+1

이것은 내 문제도 해결했습니다. – Kahn

1

같은 문제가 사소한

  • 입니다 저를 슬프게 나를 위해. 은 Qt 5.0.2 (MSVC 2010)에서 Qt 5.0.2 (mingw)으로 설치가 변경 될 때까지 아무 것도 작동하지 않습니다. 이제 다시 작동합니다 ... 유선

  • 5

    변경 사항 섀도 빌드 구성으로이 문제를 해결할 수있었습니다.내 프로젝트에서 나는 구축 프로젝트 이름 - 디버그

    로 출력 파일을 구축하고자하지만 파일 moc_FileName.cpp 및 빌드 디렉토리에 ui_FileName.h하지 않은 경우 QtCreator은 확인 스마트 없습니다. 이 파일 moc_FileName.cppui_FileName.h 프로젝트 디렉토리에있는 경우 QtCreator이 그들을 사용하고 .ui 파일에 대한 수정을 인식하지 못하기 때문에 이 문제가 발생합니다. 이 문제에 대한

    이 솔루션은 나에게 쉬웠다 : 이 프로젝트 디렉토리에서 모든 moc_FileName.cppui_FileName.h를 제거하고 를 다시 빌드합니다. 이 파일은 build-ProjectName-Debug으로 생성되며 모든 수정 사항이 적용될 예정입니다.

    +1

    저에게 문제가 해결되었습니다! 고마워. –

    1

    같은 문제가 발생했습니다. 건물을 만들 때 UI 변경 사항이 표시되지 않습니다. 위에서 언급 한 문제는 ui 파일이 다시 만들어지지 않는다는 것입니다.

    그림자 검사를 선택 취소하면 문제가 해결되지만 한 번만 해결됩니다. 그 후에 나는 후속 ui 변화를 다시 볼 수 없었다. 그래서 그림자 빌드를 다시 검사하고 기존 그림자 빌드 폴더를 삭제했습니다. 이것은 모든 빌드 파일을 삭제하는 한 일관되게 작동합니다. 하지만 그것은 절름발이입니다. ui 변경 사항을 감지하고 파일을 다시 작성할 수 있어야합니다.

    Qt Creator/Designer에서 버그로 기록되어야한다고 생각합니다. 내가 Shadow Build, qtCreator가 .EXE를 생성하려면 ui_xxx.h이 변경되었다하더라도 새로운 .OBJ을 생성 이외, 기존의 .OBJ을 사용합니다 확인하는 경우

    2

    나는 그를 찾아 .I 다음 cleanbuild하여이 문제를 해결 내 환경을 디버깅 할 때 qt5.5 + msvc2013입니다.

    2

    이 파일 qmake를 위해 추가, 개인적으로 나에게 도움이 무엇 : UI_DIR = $$PWD

    1

    내가 소스 폴더에있는 모든 자동 세대 파일을 삭제합니다. 섀도우 빌드를 선택 취소하면 소스 파일에 자동 생성 파일이 생성되었습니다. 그림자 빌드를 확인한 후 컴파일러는 원본 폴더의 gen 파일 만 사용합니다. 그래서 모든 자동 gen 파일 (ui_ , moc_)을 삭제하고 ui가 항상 업데이트되었습니다.

    0

    위에서 언급 한 것처럼 ui 파일은 다시 만들어지지 않습니다. 나에게 가장 쉬운 해결책은 Build 대신 Build Rebuild를 사용하는 것이다. 매번 프로젝트 하위 메뉴로 이동할 필요가 없습니다. 프로젝트가 너무 크지 않은 한, 이것은 괜찮습니다. (오랜 세월 동안 Qt가 지금 가지고있는 anoying 버그는 별개입니다.)

    관련 문제