簡體   English   中英

Python中的Qt / C ++原型

[英]Prototyping Qt/C++ in Python

我想用Qt編寫一個C ++應用程序,但是首先使用Python構建一個原型,然后逐漸用C ++替換Python代碼。

這是正確的方法,我應該使用哪些工具(綁定,綁定生成器,IDE)?
理想情況下,所有內容都應該在Ubuntu存儲庫中可用,因此我不必擔心不兼容或舊版本,並且使用簡單的aptitude install設置所有內容。
是否有關於此過程的全面文檔,或者我是否必須學習每個組件,如果是,那些是哪些?

現在我有多種選擇:Qt Creator,因為很好的自動完成和Qt集成。
Eclipse,因為它支持C ++和Python。 埃里克(還沒用過)Vim

PySide因為它正在使用CMake和Boost.Python,所以從理論上講它會更容易替換python代碼。 PyQt因為它被更廣泛地使用(更多支持)並且可以作為Debian包使用。

編輯 :因為我必須將程序部署到各種計算機,C ++ - 解決方案將需要1-5個文件(程序和一些庫文件,如果我靜態鏈接它),使用Python我必須構建PyQt / PySide / SIP /在每個平台上都有,並解釋如何安裝Python和其他所有東西。

我想用Qt編寫一個C ++應用程序,但是首先使用Python構建一個原型,然后逐漸用C ++替換Python代碼。 這是正確的方法嗎?

這取決於你的目標。 完成這兩項工作后,我建議您盡可能合理地使用Python。 雖然它需要一些紀律,但是用Python編寫非常大的應用程序是非常可能的。 但是,當您發現可以在C ++中更好地處理的熱點和事物時,您當然可以將相關部分移植到C ++中。

是否有關於此過程的全面文檔,或者我是否必須學習每個組件,如果是,那些是哪些?

這是我推薦的各種作品:

EDITOR / IDE :使用您熟悉的任何編輯器/ IDE,但我強烈推薦一種支持重構的編輯器/ IDE。 如果您對Eclipse感到滿意,請使用它。 如果你想主要使用C ++路線並且你對任何編輯都不太熟悉,那么使用QtCreator可能會更好。 Eric是一個非常好的Python IDE,支持重構,除非你要做很多C ++,看看它。 更好的是,它的源代碼是一個很好的PyQt使用和實踐的例子。

過程

快速摘要:

  1. 使用PyQt在Python中編寫應用程序
  2. 當被識別為熱點時,將解耦的Python類轉換為C ++
  3. 使用SIP為這些類創建綁定
  4. 用Python導入新定義的庫代替Python對應的庫
  5. 享受速度提升

一般細節:

使用PyQt在Python中編寫應用程序。 小心保持關注點的良好分離,這樣當您需要將片段移植到C ++時,它們將與其依賴項分離。 當你最終需要將某些東西移植到C ++時,用C ++ / Qt編寫它,然后使用SIP為它創建綁定。 SIP有關於該過程的一本很好的參考手冊 ,你以PyQt為例。

部署

C ++ - 對於許多應用程序,依賴關系非常簡單,使用NullSoft的InstallerInnoSetup等工具創建安裝程序並不困難。

Python / PyQt - PyQt應用程序安裝起來有點困難,因為它依賴於Python並且依賴於Qt庫的存在。 一個人記錄了他在ARSTechnica的這篇文章所做的努力。 py2exe在Windows上工作得很好,應該可以正常工作。 與Python源一起提供的IME, freeze.py ,有時會確定哪些共享庫是真正必要的,有時最終會創建一個不存在依賴關系的二進制文件。 Py2app可以在Mac OS X上運行

但更糟糕的是PyQt / Qt許可。 如果您正在開發商業應用程序,則需要擁有商業PyQt(和Qt)許可證,並確保防止用戶因許可限制而輕易修改源代碼或以其他方式針對PyQt / Qt API編寫代碼。 因此,PyQt作者創建了一個名為VendorId的工具(盡管它有Python許可證)。 在VendorId中是一個名為SIB的工具,可用於創建僅依賴於Python解釋器的可執行文件。 但是,如果你打算走這么遠,你可能想要在你的應用程序中安裝自定義Python。

免責聲明 :我根本沒有使用過PySide ,所以我不確定它與PyQt的比較。 另外,請在其網站上注明以下警告:

PySide正在進行中,尚不適合需要生產級穩定性的應用程序開發。

但是,好的一點是,他們打算,至少在初始版本中“保持與PyQt的API兼容性”。 因此,除了C ++綁定之外,您可以稍后在兩者之間輕松切換。

如果您只是在學習Qt並希望利用Python為您提供的原型設計速度,那么我建議您使用PyQt創建一個示例項目。 正如你所說,有一個debian包,所以你只是一個簡單的方法apt-get遠離你的第一個應用程序。

我個人使用gVim作為我的Python / Qt編輯器,但你可以毫不費力地使用任何Python友好的編輯器。 我喜歡WingIDE並且他們已經為Qt自動完成了,但是一旦你從vim kool-aid啜飲它就很難切換。

我會說PySidePyQt兼容95%並且LPGL許可證很好,但是如果你只想嘗試原型化你的第一個Qt應用程序,那么我認為沒有真正的理由使用PySide 雖然,我更喜歡PySide文檔,但您也可以使用它們並用PyQt替換所有庫引用。

根據您正在構建的應用程序的復雜性,最好從頭開始使用C ++版本,而不是嘗試做一堆SIP重構黑魔法。 一旦掌握了Qt框架,您就可以非常輕松地在C ++和Python綁定之間切換。

在開始編寫原型代碼之前,我會繪制UI模型。 這有一些好處:

  • 比編碼原型更快,因為不涉及編程

  • 使用數據快速填充窗口小部件(如表和樹)

  • 在屏幕上添加說明和注釋

  • 無需捕獲屏幕即可輕松將模型集成到規范文檔中

  • 在實現之前驗證UI設計概念

有很多工具可以幫助你做到這一點,但如果你打算使用Qt, MockupUI可能是一個不錯的選擇,因為它為Windows 7,8或10渲染Qt小部件的原生樣式,這使你的模型看起來更真實。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM