2012-02-24 2 views
0

내 프로젝트에서 나는 QWizard와 QWizardPages를 사용한다. 그러나 마침내 나는이 클래스들이 너무 많이 제한되어 있다는 것을 발견했다. 나는 그들의 소스 코드를 수정하려고한다. 하지만 Qt 소스를 직접 수정하는 것은 좋지 않지만 프로젝트 폴더에 복사하고 클래스 이름을 바꿉니다. 그들의 누군가가 이전에 똑같은 행동을 했습니까? 나는 파일을 성공적으로 컴파일 할 수 없다. qMywizard.cpp는 결국 qMywizard.h의 생성 된 moc 파일을 포함하고, moc 파일은 QMyWizardPrivate 정의없이 컴파일 될 수 없다. 또한 파일이 위치를 변경하면 많은 매크로를 인식 할 수 없다는 점도 걱정됩니다. 누구든지 조언을 해줄 수 있습니까?qt 소스 파일을 내 프로젝트에 복사하고 컴파일을 수행하는 방법은 무엇입니까?

+1

클래스를 상속받지 못하고 수정할 필요가있는 멤버 함수를 오버로드하거나 재정의 할 수 없습니까? –

+0

@ Joachim : Qt 클래스는 모든 결정을 내릴 수있는 내부의 개인 데이터 클래스로 구성되므로 일반적으로 불가능합니다. Qt 클래스는 단순히 외벽 일뿐입니다.이 클래스를 재정의 할 수는 있지만 무엇이든 이길 수는 없습니다. 실제 알고리즘에는 액세스 할 수 없습니다. – Jens

+0

@ joachim-pileborg : 실제로 QWizard를 상속받은 클래스를 작성했지만 많은 문제가 있습니다. 예를 들어 마법사 버튼의 속성을 ​​제어하려고하지만 Qwizard는 새로운 페이지를 입력 할 때마다 상태를 업데이트합니다. – Royt

답변

0

Qt 소스는 자식입니다. 그것을 복제하고, 가지를 만들고, 거기에 수정을 적어서 빌드 시스템으로 컴파일하십시오. 또한 수정에 대한 라이센스 의무를 이해하고 준수해야합니다 (특히 LGPL을 사용하는 경우).

+0

QT 폴더에서 수정을 할 수없는 경우 자체 빌드 시스템으로 컴파일하는 방법은 무엇입니까? LGPL이 만든 프로젝트 폴더에 파일을 복사 할 수 없다는 뜻입니까? – Royt

+0

그냥 라이센스를 읽어주십시오. 내가 말했듯이, 그들의 자식 repo (http://qt.gitorious.org/)를 복제하고 해당 폴더에서 작동합니다. 당신이 내가 말하는 것을 모두 이해하지 못한다면 앉아서 목표를 달성하기를 원한다고 배웁니다. –

+0

이 방법은 분명히 의미있는 것입니다. 나중에 Qt의 새로운 버전으로 업데이트하기로 결정한 경우, 변경 사항이 완전히 병합되고 모든 것이 여전히 예상대로 작동하는지 확인할 책임이 귀하에게 있습니다. 그것이 나 였다면, 나는 요아킴의 제안에 대해 진지하게 생각해 보았습니다. – kenrogers