2012-02-24 105 views
0

在我的項目中,我使用QWizard和QWizardPages,但最終我發現這些類有太多限制,我想修改它們的源代碼。但我認爲直接修改qt源並不是一個好主意,而是將它們複製到我的項目文件夾並重命名類名稱。他們有人在做同樣的事情嗎?我無法成功編譯這些文件,似乎qMywizard.cpp在最後包含了生成的qMywizard.h的moc文件,並且如果沒有QMyWizardPrivate定義,moc文件將無法編譯。我也擔心,當文件更改位置時,無法識別許多宏。任何人都可以給我一些建議嗎?如何將qt源文件複製到我的項目並讓他們編譯通過?

+1

難道你不能繼承類,並重載/重載你需要修改的成員函數嗎? – 2012-02-24 10:49:51

+0

@Joachim:通常情況下這是不可能的,因爲Qt類是由一個內部的私有數據類構成的,所有決策都是在這個類中進行的。 Qt類只是外觀,你可以重寫,但是你不能通過這個獲得任何東西。仍然無法訪問實際的算法。 – Jens 2012-02-27 15:41:33

+0

@ joachim-pileborg:其實我寫了一個繼承QWizard的類,但是有這麼多麻煩。例如,我想控制嚮導按鈕的屬性,但是Qwizard會在每次進入新頁面時更新其狀態,這很無聊。 – Royt 2012-02-28 11:01:36

回答

0

Qt源代碼在git中。克隆它,建立一個分支,在那裏寫你的修改並用它們的構建系統進行編譯。此外,請務必理解並遵守修改時的許可義務(特別是在您使用LGPL時)。

+0

如果我無法在QT文件夾中做任何修改,如何使用自己的構建系統進行編譯?而且,這是否意味着我無法通過LGPL將文件複製到我自己的項目文件夾中? – Royt 2012-02-24 10:56:47

+0

請只閱讀許可證。正如我所說,克隆他們的git repo(http://qt.gitorious.org/)並在該文件夾中工作。如果你不明白我所說的全部內容,那麼我建議你坐下來學習,如果你想實現你的目標。 – 2012-02-24 11:34:58

+0

這當然是一種有效的方式,只要意識到其中的含義。如果您稍後決定更新到Qt的更新版本,您將負責確保所做的更改整齊地合併在一起,並且所有內容仍然按照您的預期正常工作。如果是我,我會首先認真考慮Joachim的建議。 – kenrogers 2012-02-24 13:22:29

相關問題