2010-08-19 49 views
6

標準C++和Qt之間大量的功能是重複的。在某些情況下,這似乎很合理,但很多時候它看起來很愚蠢。就像我想做一種新的編程語言,學習我已經知道的東西。例如使用QFile。Qt:Qt類與標準C++的比較

另外,如果我這樣做所有的Qt方式,並假設現在我想擺脫Qt框架,重寫該代碼將是太繁瑣。 OTOH我喜歡Qt,因爲它爲我提供了庫,否則我將不得不像釣魚一樣釣魚自己喜歡的webkit,數據庫連接,dbus等。

你有什麼建議混合使用標準C++還是純Qt方式?

+0

稍有相關問題:http://stackoverflow.com/questions/1668259/stl-or-qt-containers – 2010-08-20 08:26:21

回答

5

由於在C++中沒有GUI,所以應該從其餘的實際代碼中抽象出GUI代碼。

然後,在您的GUI抽象的QT實現中,可以隨意使用QT代碼。
然後,您還可以編寫Wx/Quartz GUI抽象而不影響真實代碼。在真實的代碼中(工作完成了),堅持標準的東西(或幾乎標準(增強)的跨平臺庫)。有人可能會說QT是跨平臺的。請記住,在這裏使用lib將緊密地將你的代碼和lib聯繫起來,從而提取它,後面的日期將不是微不足道的。 (請參閱上一個關於從傳統應用程序中刪除胭脂蟲的問題)

3

我在std ::中做了所有的集合類,它對於非Qt開發人員來說更清晰並且更便於攜帶。

字符串和字符串列表我在一個純粹的Qt函數中使用Qt函數,它正在做一些GUI-ish操作,但是使用std :: String。雖然Qt .arg()格式比stringstream好很多

+0

隨Qt提供的容器有更輕的尺寸,因爲它們利用[隱式共享](http://doc.qt.nokia.com/4.6/implicit-sharing.html),而且他們提供了[Java風格的迭代器](http://doc.qt.nokia.com/4.6 /containers.html#java-style-iterators)。因此,我建議使用它們而不是STL。 – 2010-08-22 10:53:09

+0

還有boost :: format ,它提供了一個很好的輸出方式。 – rriemann 2013-12-10 22:13:59