初次使用 Qt Creator 建立 Qt Quick 專案時,面對「Qt Widgets Application」、「Qt Quick Application」、「Qt Quick Controls Application」三選一,極易選錯導致後期架構調整成本高。本文通過對比三類專案的結構差異,給出明確選型建議。
| 專案類型 | 核心窗口類 | 加載 QML 方式 | 適用場景 |
|---|---|---|---|
| Qt Widgets Application | QMainWindow / QWidget | 需手動用 QDeclarativeView / QQmlApplicationEngine 加載 | 傳統 Widget 為主,少量 QML 嵌入 |
| Qt Quick Application | QQuickWindow | main.cpp 中直接 create QQmlApplicationEngine 載入 main.qml | 純 QML 界面,無原生控件依賴 |
| Qt Quick Controls Application | ApplicationWindow (繼承 Window) | 同 Qt Quick,但 QML 根節點為 ApplicationWindow | 需標準原生風格控件、菜單欄、工具欄、狀態欄的完整應用 |
提供 menuBar、toolBar、statusBar、contentItem 四大區域,無需手工佈局頂層結構。
// main.qml 典型結構
ApplicationWindow {
visible: true; width: 640; height: 480; title: qsTr("App")
menuBar: MenuBar { Menu { title: "File"; MenuItem { text: "Exit"; onTriggered: Qt.quit() } } }
toolBar: ToolBar { ToolButton { text: "Add" } }
contentItem: ListView { model: 100; delegate: Text { text: index } }
statusBar: StatusBar { Label { text: "Ready" } }
}
Qt Quick Controls 1.x (Qt 5.1+) 封裝了桌面風格控件,自動適配 Windows/macOS/Linux 外觀,省去自繪樣式工作量。
Widgets 專案混用 QML 需處理事件循環、上下文傳遞、渲染同步等棘手問題;純 Quick 專案則天然統一。
'cl' 不是內部或外部命令cl.exe 路徑,或安裝 Visual Studio 並勾選 C++ 桌面開發負載。setLayout(mainLayout),且控件已 new 在堆上。示例代碼可直接運行。QQuickWidget 嵌入。選對專案類型是 Qt Quick 開發順利的前提。建議初學者直接從 Qt Quick Controls Application 起步,享受開箱即用的 ApplicationWindow 與原生控件,專注業務邏輯而非基礎架構搭建。