簡體   English   中英

Qt是如何工作的(確切地說)?

[英]How does Qt work (exactly)?

使用Qt編寫應用程序時,是否可以立即在不同的操作系統中運行? 並且(如果我錯了,請糾正我)您不需要在要執行應用程序的所有不同平台上安裝Qt嗎?

這究竟是如何工作的? Qt是否編譯到所需的平台,或者是否捆綁了一些“dll”(libs),或者它是如何做到的? 它是否與編寫跨平台運行的Java應用程序不同。

如果您使用Python編寫帶有Python綁定的Qt應用程序,您的最終用戶是否需要安裝Python?

Qt(理想情況下)提供源兼容性,而不是二進制兼容性。 您仍然需要為每個平台單獨編譯應用程序,並使用適當的動態Qt庫(它們也需要單獨編譯,並具有一些特定於平台的代碼)。

對於您的最后一個問題,用戶需要Python,Qt庫和綁定庫(例如pyqt),但有各種方法可以捆綁這些。

PyQT [和它的開源堂兄PySide]是一個很好的跨平台QT綁定python,但它不是一個神奇的解決方案,無需進行任何打包/安裝程序維護,為所有平台運送您的應用程序。 我想也許你可能會期待一些魔力。

QT是一個用C ++編寫的跨平台庫。 這意味着,您可以編寫一次C ++或Python(或帶有綁定的其他語言)代碼,並創建一個“窗口”(窗體,對話框,屏幕上的某些內容)並使用控件(按鈕等等)填充它並且不必處理在Windows,Linux和Mac OS X上如何制作按鈕的平台差異。

因為它是一個庫,所以它可以以多種方式打包。 它可以是“靜態鏈接”(內置於您的可執行文件/二進制/應用程序中)或“動態鏈接”(在Windows中稱為DLL,共享庫或unix / linux上的DLL或作為框架,在mac os x中)。 它並不總是“安裝”在計算機上,除非它是共享庫。

即使它“安裝”到計算機上,該計算機上可能存在多個版本,因此將其視為計算機的擴展是不恰當的,而是對您的計算機上的應用程序(程序)的擴展電腦。

如果您對QT使用Python綁定,那么您的應用程序的安裝包需要包含QT綁定的二進制文件(python擴展),基本的Python運行時環境,包括Python可執行文件和基本庫,以及程序的源代碼。 可以將大部分內容打包成一個“捆綁”。 例如,在Mac OS X上,所有這些都可以輕松地放入“.app”軟件包中,在Windows和Linux上,我相信有一些打包和安裝工具可以幫助您輕松完成。

即使您只需要為應用程序編寫一次用戶界面代碼,您也不會神奇地獲得同時在所有三個主平台上發布應用程序的能力,而無需至少進行安裝程序或打包的構建。每個平台。 用戶希望下載適用於Windows或Mac OS X的安裝/安裝包,也許對於Unix / Linux,它還取決於您安裝的分發版。

感謝AdamW為此諾基亞鏈接提供部署信息

問題是你對“已安裝”的定義。 要讓Qt工作,可執行文件必須能夠訪問正確的庫。

當然,對於每個平台,必須生成不同的可執行文件和庫(請參閱Qt文檔 )。

關於Python,如果要運行Python可執行文件,則必須安裝它(以更傳統的方式)。 例如,除非您在Windows中使用py2exe運行。

暫無
暫無

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

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