Russian Qt Forum

Qt => Qt Quick => Тема начата: juvf от Октябрь 24, 2022, 08:08



Название: QML Slider
Отправлено: juvf от Октябрь 24, 2022, 08:08
Доброго дня.

Кто знает как поменять цвет текста у QML Slider? (а также шрифт, размер шрифта, ориентацию текста (слева/справа/сверху/снизу от слайдера?)


Название: Re: QML Slider
Отправлено: kambala от Октябрь 24, 2022, 09:54
https://doc.qt.io/qt-5/qtquickcontrols2-customize.html#customizing-slider

а текста в свойствах вообще не вижу...

а ты случайно не quick controls 1 используешь? там есть такое: https://doc.qt.io/qt-5/qml-qtquick-controls-styles-sliderstyle.html#tickmarks-prop


Название: Re: QML Slider
Отправлено: juvf от Октябрь 24, 2022, 10:13
QtQuick.Controls 2.15

Я промучился со свойствами... не могу найти текст.


Название: Re: QML Slider
Отправлено: kambala от Октябрь 24, 2022, 12:06
так а откуда у тебя там текст? вот я сделал тривиальный слайдер из примера, никакого текста он не показывает (на макос):
Код:
	Slider {
from: 1
value: 25
to: 100
}


Название: Re: QML Slider
Отправлено: juvf от Октябрь 24, 2022, 12:10
так а откуда у тебя там текст?
Сорри, не слайдер, а Switch (он просто выглядит как слайдер в 2-мя позициями."

Я добился сметы цвета текста. но съехали "якоря". как теперь выровнять - не получается.

Код:
    Switch
    {
        id: dayNight
        text: "Day Night"
        anchors.left: parent.left
        anchors.verticalCenter: parent.verticalCenter
        font.pixelSize: 24
        onCheckedChanged: mainWindow.isDay = dayNight.checked ? false : true
        contentItem: Text {
        //    rightPadding: dayNight.indicator.width + dayNight.spacing
            text: dayNight.text
            font: dayNight.font
            color: "white"
            //anchors: dayNight.anchors
      //  elide: Text.ElideRight
      //         verticalAlignment: Text.AlignVCenter

        }
    }
Текст и слайдер (который свитч) друг на друге.




Название: Re: QML Slider
Отправлено: kambala от Октябрь 24, 2022, 12:28
якоря там вроде нельзя использовать. стандартная реализация выглядит так (лежит в QTDIR/qml/QtQuick/Controls.2/Switch.qml):
Код:
    contentItem: CheckLabel {
        leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0
        rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0

        text: control.text
        font: control.font
        color: control.palette.windowText
    }
где control — это сам Switch

например, через padding свойства можно контролировать положение. также см. https://doc.qt.io/qt-5/qml-qtquick-controls2-control.html#control-layout


Название: Re: QML Slider
Отправлено: juvf от Октябрь 24, 2022, 13:06
стандартная реализация выглядит так (лежит в QTDIR/qml/QtQuick/Controls.2/Switch.qml):
да, нашел её. а как использовать стандартную реализацию?
пробую
Код:
    Switch
    {
        id: dayNight
        text: "Day Night"
        anchors.left: parent.left
        anchors.verticalCenter: parent.verticalCenter
        onCheckedChanged: mainWindow.isDay = dayNight.checked ? false : true
        contentItem: CheckLabel //на этой строке ошибка. CheckLabel  - анкноун элемент.
        {

        }
    }


Название: Re: QML Slider
Отправлено: kambala от Октябрь 24, 2022, 13:26
по ней можно ориентироваться как написать свою.

CheckLabel — это наверно что-то приватное, можно взять обычный Text или Label. https://doc.qt.io/qt-5/qtquickcontrols2-customize.html#customizing-switch как пример


Название: Re: QML Slider
Отправлено: juvf от Октябрь 24, 2022, 13:30
по ней можно ориентироваться как написать свою.

CheckLabel — это наверно что-то приватное, можно взять обычный Text или Label. https://doc.qt.io/qt-5/qtquickcontrols2-customize.html#customizing-switch как пример
Дааааа!!!
Код:
        contentItem: Text {
            text: dayNight.text
            font: dayNight.font
            color: "white"
            verticalAlignment: Text.AlignVCenter
            leftPadding: dayNight.indicator.width + dayNight.spacing
        }
СРАБОТАЛО!!! Спасибо!