這是歷史版本頁面 — 看 Qt (64-bit) 最新版本

跨平台桌面程式開發框架,Qt 能幫你做到什麼

Qt (64-bit) 軟體圖示 Qt (64-bit) 5.7.1 (64-bit) 資料更新 2016-12-14 閱讀約 6 分鐘

你手上有一個點子,想寫一支小工具,讓它在 Windows 上跑,也希望之後能搬到 Mac 或 Linux 上。你打開 Visual Studio 或記事本,寫到一半開始猶豫:換了系統,程式碼是不是要重寫?介面要重畫?那些按鈕、視窗、選單,在不同作業系統上長得完全不一樣,你不想為了每個平台各維護一套程式碼,但又不知道從哪裡切入。

有些人會想,那就用網頁技術包一層殼,反正瀏覽器到處都有。但做出來的東西開起來慢、吃記憶體,而且很多系統功能繞來繞去就是碰不到。另一條路是學各平台的原生開發,但等於同一件事做兩遍。這個困境的切入點,是找一個「寫一次、編譯到多個平台」的框架,讓介面、邏輯、網路、資料庫這些共用同一套程式碼,而不是每換一個系統就從零開始。

01Qt 到底能做什麼?

Qt 是一套跨平台的應用程式開發框架,主要用途是建立圖形介面(GUI)和應用程式,支援 Windows、macOS、Linux,也能編譯到 Android 和 iOS。它提供預先做好的 UI 元件、網路、SQL 資料庫連線、多媒體處理等功能,讓開發者用同一份程式碼,在不同作業系統上產出原生執行的應用程式,而不是網頁包殼。

02它支援哪些程式語言?

Qt 的核心語言是 C++,這是它最主要的開發方式。另外透過 PyQt 或 PySide 綁定,可以用 Python 來寫 Qt 應用程式;QML 則是用來描述介面的宣告式語言。JavaScript 也可以透過 QML 整合使用。如果你只會 Python 不會 C++,還是能上手,只是要另外安裝綁定套件。

03可以用它開發手機 App 嗎?

可以。Qt 支援 Android 和 iOS 的開發,主要透過 Qt Quick 和 QML 來建立手機介面。用同一套程式碼,可以同時產出桌面版和手機版。不過要注意,手機上有些平台特有的功能(例如感應器、相機)需要透過 Qt 的模組或原生程式碼來補強,不是所有桌面功能都會自動對應到手機上。

04它適合拿來做遊戲嗎?

Qt 支援 OpenGL 和 3D 圖形,可以做一些模擬、視覺化或簡單的遊戲。但官方說明也提到,它比較適合「應用程式」而不是高效能遊戲引擎。如果你要做的是 3A 級遊戲或需要大量物理運算的遊戲,Unity 或 Unreal 這類專門引擎會更合適。Qt 的強項在工具、介面、嵌入式系統,不是遊戲。

05它跟 Visual Studio 能搭配使用嗎?

可以。Qt 有 Visual Studio Add-in,可以直接整合到微軟的 IDE 裡,在 Visual Studio 中建立 Qt 專案、編譯、偵錯。如果你習慣用 Visual Studio 寫 C++,不需要換編輯器。另外 Qt 也有自己附帶的 Qt Creator IDE,內建語法標色、除錯器、即時設計預覽,兩條路都可以走。

06什麼樣的人適合用這套軟體?

適合需要「同一套程式碼部署到多個作業系統」的開發者,尤其是桌面應用程式為主、之後可能擴展到手機或嵌入式裝置的專案。也適合已經會 C++、想找一套完整 GUI 框架的人。如果你在 Windows 上開發,但客戶或使用者分散在 Mac 和 Linux,Qt 可以省下大量重寫介面的時間。

07它免費嗎?授權是怎麼算的?

Qt 有開放原始碼版本,採用 GPL 和 LGPL 授權,非商業用途免費。但如果你要開發「專有軟體」(不開源、要賣錢的),就需要購買商業授權,價格依需求而異。LGPL 在某些條件下可以讓你在商業軟體中使用,但要注意衍生作品的授權義務,這部分要自己確認是否符合你的商業模式。

08它對電腦硬體有什麼要求?

官方列出的系統需求是:Windows 10 或 11(64 位元)、Intel Core i3 或更高、記憶體至少 4GB(建議 8GB 以上)、硬碟空間至少 5GB、顯示卡要支援 OpenGL 才能跑 Qt Quick 應用程式。如果你的電腦是舊款或記憶體不足 4GB,跑起來可能會卡,建議先確認硬體再安裝。

09什麼情況不該選它?

如果你只做 Windows 專用的內部工具、不需要跨平台,用 .NET 或原生 Windows 框架可能更輕量。如果你完全不想碰 C++ 或 QML,只想用一種語言從頭寫到尾,Qt 的學習曲線會是障礙。另外,Qt 做出來的應用程式體積比原生 Windows 程式大,如果你很在意安裝檔大小,這點要列入考量。

10它的學習曲線很陡嗎?

官方資料提到 QML 和 Qt 框架本身有學習曲線。如果你已經會 C++,Qt Widgets 的傳統桌面介面相對好上手;但 Qt Quick 和 QML 是另一套宣告式語法,需要花時間熟悉。Python 綁定(PySide)可以降低入門門檻,但底層概念還是 Qt 的那一套,建議先從官方教學和文件開始。

11這套軟體還有人在維護嗎?

有。根據版本紀錄,它收錄了 22 個版本,最早在 2016 年,最近一次更新在 2026 年,近 12 個月更新了 7 次,近 24 個月更新了 15 次。更新頻率算穩定,代表開發團隊持續在維護。另外官方文件提到有活躍的開發者社群,遇到問題時找資料或問人相對容易。

12它的使用者評價如何?

目前有 71 人評分,平均 8.26 分(滿分 10 分)。評分人數不算多,但分數偏高。要注意的是,71 個樣本數不大,參考價值有限。如果你在猶豫,可以自己下載安裝試用,實際跑一個小專案看看介面順不順手,比只看分數更準。

下載與官方連結

前往官方網站 下載 Qt (64-bit)

qt-opensource-windows-x86-msvc2015_64-5.7.1.exe · 923 MB · 連結指向軟體原廠

版本紀錄

再看 5 筆

看完整版本清單

這一版改了什麼

What's new in this version:

QTCORE:
- QLockFile: Fixed permissions on lock files on Unix to allow for adjustments via umask
- QMimeType: QMimeType::comment() now uses the default locale rather than system locale, so that applications can control which language is being used
- QUrl: QUrl::resolved() no longer treats a URL with a scheme as a relative URL if it matches this URL's scheme. For now it still treats "file:name.txt" as relative for compatibility, but be warned that in Qt 5.8 it will no longer consider those to be relative. Both isRelative() and RFC 3986 say that such URLs are not relative, so starting from Qt 5.8, resolved() will return them as is
- QXmlStreamReader: Fixed a bug in the XML parser that prevented to load XML that contained invalid characters for XML 1.0
- QXmlStreamWriter: Fixed a bug that prevented the generation of valid XML files when using encoding with 8 bit per character but not ASCII compatible. QXMLStreamWriter generated XML markup using always ASCII in this case

QTGUI:
- QGuiApplication: Fixed a bug that would cause QGuiApplication::sync() to be left undefined for Qt builds without session management support
- QIconLoaderEngine: Fixed theme lookup for scalable entries
- QTextDocument: Fixed a bug that would return a wrong position when searching backward from the end of the document
- Text: Fixed a performance regression in Freetype engine that was introduced in Qt 5.5
- Text: Fixed a crash that could happen if you were doing many different text layouts with different fonts and superscript or subscript alignment
- Text: Fixed bug where a QTextLayout with ShowLineAndParagraphSeparators would modify the layout's input string
- Text: Fixed performance regression when rapidly switching between a large set of fonts

QTNETWORK:
- QSslSocket: Fixed a bug in SecureTransport backend that would cause a memory usage growth in case 'readBufferMaxSize' is set
- QSslSocket: Fixed a bug in SecureTransport backend where transmit was using invalid SSL context and reporting (incorrectly) some irrelevant errors as a result

QTSQL:
- Fixed QSqlQuery::prepare value truncation error when using UNSIGNED values in a MySQL database

QTWIDGETS:
- QAbstractItemDelegate: Show localized detailed tooltips and "What's this?" texts
- QTreeView: Fixed a key navigation bug when the columns were reordered

CONFIGURE & BUILD SYSTEM:
- Fixed Fontconfig vs. system FreeType configuration
- Fixed detection of GLX with -qt-xcb
- [Windows] The configure.exe bootstrapping now prefers cl over clang-cl, to avoid header incompatibility problems
- Fixed missing plugins.qmltypes files in static builds
- Fixed dynamic library support detection for platforms without libdl
- Fixed running of configure tests outside qtbase when cross compiling on Windows (for example for Android)
- The flags supplied by the configure -D/-I/-L/-l options are now applied after Qt's own flags. This helps in some cases when the provided paths contain files which conflict with the Qt build
- Fixed linkage of QML plugins in static prefix builds
- [Unix] Fixed -no-pkg-config being ignored by some configure tests, which led to build failures later on
- Fixed configure tests outside qtbase when $MAKEFLAGS contains the -i flag
- [Android] Some unused plugins are not built anymore
- [MinGW] Added support for -separate-debug-info
- [Unix] Added configure -no-opengles3 option
- [Unix] Fixed MySQL detection/use on RHEL 6.6

QMAKE:
- Fixed nested custom functions inheriting their callers' arguments
- [MSVC] Started using separate PDB files for compiling and linking
- [Darwin] Fixed installation of debug symbols
- Various QMAKE_EXTRA_COMPILERS' .depends entries are now appended to rather than overwritten
- [MSys/Apple] Fixed detection of QMAKE_DEFAULT_{INC,LIB}DIRS
- Fixed access to freed memory in $$absolute_path()
- The obsolete -target xp is now properly rejected
- [nmake] _WINDLL is now automatically defined when building a DLL, consistently with Visual Studio
- Fixed build of projects with spaces in the source or build path against static builds of Qt
- [Xcode] Fixed support for Xcode 8
- [MinGW] Fixed -release -force-debug-info missing both optimization and debug info
- Fixed several cases where the error() function would not abort qmake
- Interrupting a command run via system() will now abort qmake as well
- The packagesExist() function will now warn when used when Qt was configured with -no-pkg-config
- [Android] The default compiler flags were adjusted to match newer NDK versions
- [Darwin] Fixed detection of QMAKE_DEFAULT_INCDIRS
- [Darwin][make] Added support for building Xcode asset catalogs