我正在嘗試用 QML 中的滑塊顯示值串列。這些值具有不規則的步長,即 [10, 20, 30, 50, 75, 100]。我將如何使用 QML 滑塊(由于設計限制必須是滑塊)來執行此操作?遺憾的是,滑塊沒有模型屬性,所以我不能那樣做。當然,我可以從頭開始創建自己的自定義滑塊,但如果有更簡單的方法,為什么要重新發明輪子?
uj5u.com熱心網友回復:
解決方案
設定滑塊的范圍和步長,例如:
from: 0; to: 5; stepSize: 1
使用 JS 函式將滑塊值轉換為您需要的任何值,例如:
function hash(x) {
var table = [10, 20, 30, 50, 75, 100];
return table[x];
}
注意:對于復雜的轉換,請考慮從 C 后端呼叫類的方法。
例子
這是我為您撰寫的一個簡單示例,用于演示建議的解決方案:
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.12
ApplicationWindow {
width: 640; height: 480
visible: true
title: qsTr("QML Slider Values")
function hash(x) {
var table = [10, 20, 30, 50, 75, 100];
return table[x];
}
ColumnLayout {
anchors.centerIn: parent
Slider {
id: slider
from: 0; to: 5; stepSize: 1
}
Text {
text: hash(slider.value)
Layout.alignment: Layout.Center
}
}
}
編輯:
受@fallerd 的啟發,我將ColumnLayout-part改寫了一點:
ColumnLayout {
anchors.centerIn: parent
Slider {
id: slider
property var hashTable: [10, 20, 30, 50, 75, 100];
readonly property int hashedValue: (() => hashTable[value])();
from: 0; to: hashTable.length - 1; stepSize: 1
}
Text {
text: slider.hashedValue
Layout.alignment: Layout.Center
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/354361.html
上一篇:將前景色添加到ItemlQML
