LINUX.ORG.RU

Засмеялся/проиграл

 


0

1

Короче пишу плеер изучаю qt c qml.
qml все хвалят за красоту и чистоту, и он дейтвительно классный и гораздо удобнее и проще html, я теперь щитаю xml безобразие из веба надо выкидывать и сделать что то подобное для страниц но уже естественно совместимое с жс апи.

У этой хрени все свойства (если они не прописаны константой) как гетеры по сути динамические. И вот блин в моей реализации таймлайн с окном растягивается и ползунок естественно тоже должен пересчитывать положение на этом таймлайне, как это решено на qml (чтоб не тянуть кота за яйца):

Rectangle {
    id: timeLine
    y: 85; z: 2
    height: 20
    color: "transparent"
    border.width: 1
    border.color: "#6e6e6e"
    anchors.right: parent.right
    anchors.rightMargin: 5
    anchors.left: parent.left
    anchors.leftMargin: 115

    Rectangle {
        id: timeSlider
        x: /* 0 - было */ (timeLine.width - timeSlider.width) * window.progress
        y: -1
        width : 33
        height: 22
        radius: 3
        color : window.reverseColor
        border.color: "#737373"
        border.width: 1

        MouseArea {
            anchors.fill: parent
            cursorShape: Qt.PointingHandCursor
            acceptedButtons: Qt.LeftButton

            drag {
                target: timeSlider
                axis: Drag.XAxis
                minimumX: 0
                maximumX: timeLine.width - timeSlider.width

                onActiveChanged: {
                    if(drag.active) { //
                        // Dragging started
                    } else {
                        // Dragging finished
                        window.progress = timeSlider.x / (timeLine.width - timeSlider.width);
                    }
                }
            }
        }
    }
}

слайдер по оси икс динамически получается из длинны активной зоны таймлайна полученой из ширины таймлайна минус ширина слайдера умножить на некое процентное число получаемое из ... положения слайдера по оси икс разделить на активную зону таймлайна. Это жесть но это работает, но блин это жесть.
Ползунок так то еще должен при проигрывании двигаться, это надо будет время делить на длинну трека и записывать в переменную прогресс которая будет двигать ползунок и в принципе это все облегчает, но блин мне не нравится.
Просто потому что кто то завтра в этих апи что нибудь наменяет и все перестанет работать, а как по другому сделать здесь я не знаю, и плюс непонятно еще как будет двигающийся ползунок одновременно с размером окна сторить что то в эту злополучную переменную на которой все держится.

★★★

Последнее исправление: uin (всего исправлений: 1)

Это жесть но это работает, но блин это жесть.

Вы же сами сказали - «хрень».

anonymous
()

Засмеялся/проиграл

Я победил.

byko3y ★★★★
()

я теперь щитаю xml безобразие из веба надо выкидывать и сделать что то подобное для страниц но уже естественно совместимое с жс апи

Ну так для этого и придумали pug.

romanlinux ★★★
()

А если заплакал?

anonymous
()

дейтвительно классный и гораздо удобнее и проще html показывает какую-то кашу с лапшой вперемешку

Ох уж мне эти разработчики 21 века.

anonymous
()
Ответ на: комментарий от romanlinux

Ну так для этого и придумали pug

Основная проблема описания UI и его поведения заключается в том, чтобы отделить основной функционал и оформление/рюшечки. При этом традиционные способы разделения на описание интерфейса и код приводят к тому, что разделение оказывается в неправильном месте, то есть оказываются разделены цельные сущности и объединены разрозненные.

Я согласен с тем, что XML/HTML отвратительны как языки разметки, но использование JSON-языка делает язык лишь приятным глазу, не решая общей проблемы читаемости Glade/Qt XML, XAML, и прочих. JSX и Vue template попытались приблизиться к решению проблемы, позволяя писать код прямо в описании интерфейса, при этом позволяя выносить тяжелый код за его пределы, но описание инетрфейса с частью логики все равно оказывают перегруженными. Разрабы Qt попытались тупо скопировать этот механизм, добавив движок JS в 4.3, но, логично, они скопировали и все его недостатки.

Короче говоря, pug дает приятный вкус при поедании кактуса.

byko3y ★★★★
()

Драг должен посылать сигнал плееру. Тот обновляет прогресс и вызывает свой сигнал. QML перерисовывает слайдер.

RazrFalcon ★★★★★
()
Ответ на: комментарий от byko3y
Rectangle {
    id: timeLine
    y: 85; z: 2
    height: 20
...

Это безобразие.
Заглянули ли разработчики QT в 1С и переняли «не идеальный», но
вполне разумный способ, использования метаданных для проектирования
диалоговых форм и интерфейса.
Еще раз акцентирую на то, что это не «панацея», но один из вариантов использования метаданных.

Владимир

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.