Qt 是成熟的 C++ 跨平台 GUI 應用程式框架,支援 Windows、Linux、macOS、嵌入式 Linux、Android、iOS 等平台,採用「編寫一次、到處編譯」理念。本文整理 Qt 核心架構優勢、模組劃分與新手入門路徑。
| 特性 | 說明 |
|---|---|
| 跨平台 | 單一程式碼庫編譯原生應用,抽象平台差異(視窗系統、檔案系統、執行緒、網路) |
| 物件模型 | 擴充 C++:QObject 提供屬性系統、訊號/槽、事件機制、動態鑄型、物件樹狀管理 |
| 訊號/槽 | 型別安全的回呼機制,鬆耦合元件通訊,支援跨執行緒佇列連接 |
| 豐富模組 | Core、Gui、Widgets、Network、SQL、XML、OpenGL、QML/Quick、WebEngine、Multimedia 等 250+ 類別 |
| 工具鏈 | Qt Creator IDE、Qt Designer 視覺化設計、qmake/CMake 建構、linguist 多國語言、測試框架 |
| 授權彈性 | LGPL v3 / GPL v2 / 商業授權,滿足開源與專有軟體雙軌需求 |
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QLabel label("Hello, Qt!");
label.setAlignment(Qt::AlignCenter);
label.resize(400, 300);
label.show();
return app.exec();
}
// main.qml
import QtQuick 2.15
import QtQuick.Window 2.15
Window {
visible: true
width: 400; height: 300
title: "Hello, Qt Quick!"
Text { anchors.centerIn: parent; text: "Hello, Qt Quick!"; font.pixelSize: 24 }
}
// main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[]) {
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}
# .pro (qmake) QT += core gui widgets SOURCES += main.cpp RESOURCES += resources.qrc
# CMakeLists.txt (Qt 6 推薦) cmake_minimum_required(VERSION 3.16) project(HelloQt LANGUAGES CXX) find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets) add_executable(HelloQt main.cpp) target_link_libraries(HelloQt PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets)
QObject、訊號槽、事件迴路、容器 (QVector, QMap)、檔案 I/O。foreach、隱式共享(Copy-on-Write)優化。