Как скопировать исходные файлы qt в мой проект и позволить им скомпилироваться?

В своем проекте я использую QWizard и QWizardPages, но в конце концов я обнаружил, что у этих классов слишком много ограничений, и я хочу изменить их исходный код. Но я думаю, что не стоит напрямую изменять исходный код qt, а копировать их в папку моего проекта и переименовывать имена классов. Их кто-то делал то же самое раньше? Я не могу успешно скомпилировать файлы, кажется, что qMywizard.cpp включает сгенерированный файл moc из qMywizard.h в конце, и файл moc не может быть скомпилирован без определения QMyWizardPrivate. Я также боюсь, что многие макросы не могут быть распознаны, когда файлы меняют местоположение. Кто-нибудь может дать мне совет?


person Royt    schedule 24.02.2012    source источник
comment
Разве вы не можете наследовать классы и перегрузить/переопределить функции-члены, которые вам нужно изменить?   -  person Some programmer dude    schedule 24.02.2012
comment
@Joachim: Обычно это невозможно, поскольку классы Qt структурированы с внутренним закрытым классом данных, в котором принимаются все решения. Классы Qt — это всего лишь фасады, которые вы можете переопределить, но вы ничего не выиграете этим. Доступа к актуальным алгоритмам по-прежнему нет.   -  person Jens    schedule 27.02.2012
comment
@joachim-pileborg: На самом деле я написал класс, унаследованный от QWizard, но с ним так много проблем. Например, я хочу управлять свойствами ‹включить/отключить/показать/скрыть› кнопок мастера, но Qwizard будет обновлять их статус каждый раз при входе на новую страницу, это скучно.   -  person Royt    schedule 28.02.2012


Ответы (1)


Исходный код Qt находится в git. Клонируй его, делай ветку, пиши туда свои модификации и компилируй своей системой сборки. Кроме того, убедитесь, что понимаете и соблюдаете лицензионные обязательства по модификациям (особенно если вы используете LGPL).

person Tamás Szelei    schedule 24.02.2012
comment
Как скомпилировать с их собственной системой сборки, если я не могу внести какие-либо изменения в папку QT? и значит ли это, что я не могу копировать файлы в свою папку проекта с помощью LGPL? - person Royt; 24.02.2012
comment
Просто прочитайте лицензию, пожалуйста. Как я уже сказал, клонируйте их репозиторий git (qt.gitorious.org) и работайте в этой папке. Если вы не понимаете всего, о чем я говорю, я предлагаю сесть и научиться, если вы хотите достичь своей цели. - person Tamás Szelei; 24.02.2012
comment
Это, безусловно, правильный путь, просто помните о последствиях. Если вы позже решите обновиться до более новой версии Qt, ВЫ будете нести ответственность за то, чтобы изменения были объединены вместе и чтобы все работало так, как вы ожидаете. Если бы это был я, я бы сначала серьезно обдумал предложение Иоахима. - person kenrogers; 24.02.2012