自定义旋转盒带"经典"旋转箱显示

时间:2017-05-03 12:20:17

标签: qt qml qtquickcontrols2 qspinbox

我需要为我的spinbox使用双QML view,在这种情况下,我将spinbox基于this example

SpinBox {
    id: spinbox
    from: 0
    value: 110
    to: 100 * 100
    stepSize: 100
    anchors.centerIn: parent

    property int decimals: 2
    property real realValue: value / 100

    validator: DoubleValidator {
        bottom: Math.min(spinbox.from, spinbox.to)
        top:  Math.max(spinbox.from, spinbox.to)
    }

    textFromValue: function(value, locale) {
        return Number(value / 100).toLocaleString(locale, 'f', spinbox.decimals)
    }

    valueFromText: function(text, locale) {
        return Number.fromLocaleString(locale, text) * 100
    }
}

当您使用自定义旋转框时,它似乎不会显示为" classic"纺纱器。它显示如下:

enter image description here

但是,按钮对我的界面来说太大了。我想知道是否有一种简单的方法来将旋转盒显示为经典"像这样的旋转框

enter image description here

1 个答案:

答案 0 :(得分:1)

如果您对在项目中使用旧的QtQuick.Controls 1.x没有保留意见......
您可以使用前缀在同一文件中同时使用QtQuick.Controls 1.xQtQuick.Controls 2.0

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Controls 1.4 as OldCtrl

ApplicationWindow {  // Unprefixed, therefor from the new QtQuick.Controls 2.0
    id: root
    visible: true
    width: 400; height: 450

    OldCtrl.SpinBox {
        width: 100
        value: 20
        decimals: 2
    }
}

以下是此SpinBox

的文档

如果您想使用QtQuick.Controls 2.x,则可以为up.indicatordown.indicator

定义自定义项
SpinBox {
    id: sb
    value: 20
    up.indicator: Rectangle {
        height: parent.height / 2
        anchors.right: parent.right
        anchors.top: parent.top
        implicitHeight: 40
        implicitWidth: 40 // Adjust width here
        color: sb.up.pressed ? "#e4e4e4" : "#f6f6f6"
        border.color: enabled ? "#21be2b" : "#bdbebf"
        Text {
            text: '+'
            anchors.centerIn: parent
        }
    }
    down.indicator: Rectangle {
        height: parent.height / 2
        anchors.right: parent.right
        anchors.bottom: parent.bottom
        implicitHeight: 40
        implicitWidth: 40 // Adjust width here
        color: sb.down.pressed ? "#e4e4e4" : "#f6f6f6"
        border.color: enabled ? "#21be2b" : "#bdbebf"
        Text {
            text: '-'
            anchors.centerIn: parent
        }
    }
}