每當我用一些圖形工具包開始一個項目時,最初的衝突之一就是如何處理視覺設計和小部件佈局:圖形工具還是手動編碼?Qt Designer vs Handcoding
這是一個非常棘手/主觀的問題,因爲大多數人會根據個人喜好來決定。它也很大程度上取決於圖形工具的質量。在這種情況下,我想專注於最新版本的QT庫。我不打算討論哪種方法更好。我相信最好的答案是:取決於項目。
我想要的是一個很好的非偏見文章的參考,基於幾個項目後的經驗。這篇文章應該只是描述兩種選擇的權衡
每當我用一些圖形工具包開始一個項目時,最初的衝突之一就是如何處理視覺設計和小部件佈局:圖形工具還是手動編碼?Qt Designer vs Handcoding
這是一個非常棘手/主觀的問題,因爲大多數人會根據個人喜好來決定。它也很大程度上取決於圖形工具的質量。在這種情況下,我想專注於最新版本的QT庫。我不打算討論哪種方法更好。我相信最好的答案是:取決於項目。
我想要的是一個很好的非偏見文章的參考,基於幾個項目後的經驗。這篇文章應該只是描述兩種選擇的權衡
我開始做所有的手工編碼,最近已經開始使用Qt Designer來處理大多數表單。下面是每個位置的一些優勢:
使用Qt設計
手工編碼
其他
QWizard
表單,我發現我需要爲每個頁面使用不同的UI文件。您可以一次完成所有工作,但以任何類型的自定義方式在頁面之間進行通信變得非常尷尬。總之,我從Qt Designer開始,讓它儘可能地帶我,然後從那裏手工編寫代碼。這是Qt Designer生成的一件好事 - 它只是成爲類的一員的另一個類,您可以根據需要訪問它並對其進行處理。
我傾向於使用設計器佈局對話框,但我在主代碼中執行所有事件處理。我也做直接代碼中的所有主窗口,工具欄,菜單。
設計師只是令人沮喪的 - 可惜,因爲體面的拖放式分級機基於設計師已經存在了十多年
+1瞭解。我也在主代碼中完成了所有的事件處理工作,但隨着時間的推移,這引起了一個巨大的部分,它爲「小部件」提供了「連接」語句。最近,我決定儘可能多地(即與非動態控制)與設計師(我承認這是一個痛苦)。至少在這種情況下,GUI和代碼有進一步的分離。順便說一下,對於動態控件,我嘗試在設計器中使用虛擬控件,並將其推廣到實際的類,所以我可以通過打開ui文件來獲得關於GUI的感覺。 – dashesy 2012-02-15 00:55:05
我用兩者的結合:
我找到對於x,y座標,設計師是要走的路。
許多其他UI屬性等可以在您的代碼中設置。
我認爲試圖完全通過手工編寫UI將是一個非常耗時的項目。這不像設置HTML表格那麼簡單。
是的版本4是壞的,但在工作中使用過版本3的人說這是非常糟糕的。很多的崩潰。
我和我的QTers一起真的希望版本5會有所改進。
我知道這是一個老問題,但我希望這有助於!一個人的經驗。
我從來沒有理由使用x,y座標。 Qt佈局功能強大。如果使用x和y座標,當窗口重新調整大小時會發生什麼? HTML在這裏是一個很差的類比,因爲你不應該使用HTML表格來做佈局。將Qt的佈局與CSS比較會更有意義。 – 2012-02-09 19:50:58
我的答案基於兩年來使用PyQt4(Python綁定到Qt 4)和OpenGL開發生物化學應用程序。我沒有完成C++ Qt,因爲我們只使用C++來處理性能關鍵的算法。也就是說,PyQt4 API非常類似於Qt4,這裏仍然適用。
Qt設計
手工編碼
好
壞
提示
不要只是跳進創建窗口。首先快速勾畫幾種可能的設計,無論是在紙上還是使用像Balsamiq Mockups這樣的工具。儘管你可以在Qt Designer中做到這一點,但我認爲在你甚至決定它是否是最好的設計之前花費大量時間試圖讓你的窗戶看起來太過誘人。
如果你使用Qt Designer進行PyQt,你需要額外的步驟來運行pyuic4來編譯* .ui文件到Python源文件。我發現忘記這一步很容易,並且爲了我的更改無法正常工作而搔首弄姿。
如果您手工編寫您的用戶界面,我建議將您的佈局代碼放在一個地方,並將您的信號和插槽放在另一個地方。這樣做可以更輕鬆地改變窗口小部件在窗口上的排列方式,而不會影響任何應用程序邏輯。或者你可以改變一些行爲,而不必通過所有的佈局代碼。
享受Qt!現在我正在使用Java Swing工作,我很想念它。
這取決於您的應用程序所需的不同窗口/面板的數量。如果數字很小,請使用圖形工具。獲得完美設計的幾個窗口要快得多。如果數字很大,圖形工具可以(也應該)僅用於原型。您需要對佈局進行編碼,才能以可接受的成本進行應用範圍內的更改。
這包括創建應用程序的UI如何工作的模型以及在運行時動態添加和刪除小部件。對於這種模型的一個很好的例子(在不同的環境中),請看glamour model來創建對象瀏覽器。
我反對這個建議,它是棘手/主觀的(至少比其他發展選擇更多)。拿出決定的標準很容易。個人經驗和偏好對此非常重要,因爲他們決定何時應該將不同窗口的數量視爲較小。刀具質量也是如此。
使用手工編碼時,如果以正確的方式進行操作,則不存在樣板佈局代碼。這些都隱藏在你的UI構建類中。翻譯也很容易,因爲您可以使用來自相同UI構建類的文本生成模型。 – 2012-02-15 15:17:45