在 QML 中,Text
?組件是用于顯示文本的核心元素,支持豐富的文本樣式、布局和交互功能。以下是?完整指南?和常見用法示例:
1. 基礎用法
import QtQuick 2.15Text {text: "Hello, QML!" // 顯示文本內容font.pixelSize: 20 // 字體大小(像素)color: "blue" // 文本顏色
}
2. 關鍵屬性
字體控制
- 字體大小:
font.pixelSize: 16 // 像素單位(推薦) font.pointSize: 12 // 磅單位(根據 DPI 縮放)
- 字體家族:
font.family: "Arial" // 指定字體 font.bold: true // 加粗 font.italic: true // 斜體
- 字體顏色:
color: "#FF0000" // 十六進制顏色 color: Qt.rgba(1,0,0,0.5) // 半透明紅色
布局與對齊
- 對齊方式:
horizontalAlignment: Text.AlignHCenter // 水平居中 verticalAlignment: Text.AlignVCenter // 垂直居中
- 自動換行:
width: 200 // 限制寬度以觸發換行 wrapMode: Text.WordWrap // 按單詞換行 elide: Text.ElideRight // 溢出時顯示省略號(...)
富文本支持
- HTML 格式:
textFormat: Text.RichText text: "<b>Bold</b> <i>Italic</i> <font color='red'>Red Text</font>"
3. 高級效果
文本陰影
Text {text: "Shadow Text"font.pixelSize: 24color: "white"style: Text.OutlinestyleColor: "black" // 描邊/陰影顏色
}
漸變填充
Text {text: "Gradient Text"font.pixelSize: 30// 使用線性漸變LinearGradient {anchors.fill: parentgradient: Gradient {GradientStop { position: 0.0; color: "red" }GradientStop { position: 1.0; color: "blue" }}source: parent // 將漸變應用到文本}
}
4. 動態數據綁定
實時更新文本
Text {// 綁定到變量或屬性text: "Value: " + myValue
}// 在 JavaScript 中更新:
Button {onClicked: myValue++
}
國際化(多語言)
Text {text: qsTr("Hello World") // 使用 Qt 的翻譯系統
}
5. 性能優化
- 緩存為圖片:
layer.enabled: true // 啟用圖層緩存(靜態文本)
- 避免頻繁更新:
// 使用 Timer 控制更新頻率 Timer {interval: 1000running: trueonTriggered: text = new Date().toLocaleString() }
6. 常見問題
文本不顯示
- 檢查?
color
?是否與背景色相同 - 確保父元素的?
width/height
?不為 0
字體未生效
- 確認系統中存在指定的?
font.family
- 使用?
Qt.fontFamilies()
?打印可用字體列表
完整示例
Item {width: 400height: 200Text {anchors.centerIn: parenttext: qsTr("動態時間: ") + Qt.formatDateTime(new Date(), "hh:mm:ss")font { family: "Arial"pixelSize: 24 bold: true}color: "#333"style: Text.RaisedstyleColor: "#AAA"// 自動更新Timer {interval: 1000running: trueonTriggered: parent.text = qsTr("動態時間: ") + Qt.formatDateTime(new Date(), "hh:mm:ss")}}
}
如果需要更具體的功能(如文本輸入、復雜布局),可以結合?TextField
?或?TextEdit
?組件使用。