Russian Qt Forum

Qt => Qt Quick => Тема начата: BuRn от Июль 21, 2015, 21:39



Название: Window перемещение окна
Отправлено: BuRn от Июль 21, 2015, 21:39
Добрый день. Есть следующая проблема, у окна срыт заголовок и все что с ним связанно, дабы сделать свой, вместе с кнопкой свернуть/развернуть/зарыть, пытаюсь сделать что бы за этот мой заговолок можно было перетаскивать окно, все бы ничего, задача тривиальная, взять глобальные координаты мыши, высчитать координаты окна и присвоить x y окна новые координаты. Окно перемещается, но адекватно это выглядит если только его перемещать медленно, если я начинаю перемещать окно чуть быстрее, его начинает дергать по всему экрану(прыгает), но в итоге конечно становится на то место, куда надо. Кто-нибудь сталкивался? Есть какое-нибудь решение этой проблемы?


Название: Re: Window перемещение окна
Отправлено: Bepec от Июль 22, 2015, 11:06
Тяжеловесная отрисовка или расчёты в основном потоке имеются?

Обычное окно с изменённой отрисовкой спокойно по всему экрану таскается.

PS конечно же код бы посмотреть, но как я понимаю слишком много получится кода :)


Название: Re: Window перемещение окна
Отправлено: BuRn от Июль 22, 2015, 11:45
Тяжеловесная отрисовка или расчёты в основном потоке имеются?

Обычное окно с изменённой отрисовкой спокойно по всему экрану таскается.

PS конечно же код бы посмотреть, но как я понимаю слишком много получится кода :)
Ничего не имеется. Вот на примере голое окно, кликните на черный квадрат, откроется Windowи просто потяните его, MouseArea на весь Window.
Код:
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2

ApplicationWindow {
    id: mainWindow
    title: qsTr("Hello World")
    width: 640
    height: 480
    visible: true
    Rectangle{
        color: "black"
        width: 100
        height: 100
        anchors.left: parent.left
        anchors.top: parent.top
        MouseArea{
            anchors.fill: parent
            onClicked: testWindow.show()
        }
    }

    Window{
        id: testWindow
        flags: Qt.FramelessWindowHint
        width: 420
        height: 131
        MouseArea {
            anchors.fill: parent
            property variant previousPosition
            onPressed: {
                previousPosition = Qt.point(mouseX, mouseY)
            }
            onPositionChanged: {
                if (pressedButtons == Qt.LeftButton) {
                    var dx = mouseX - previousPosition.x
                    var dy = mouseY - previousPosition.y
                    testWindow.x = testWindow.x + dx
                    testWindow.y = testWindow.y + dy
                }
            }
        }
    }
}


Название: Re: Window перемещение окна
Отправлено: Bepec от Июль 22, 2015, 12:32
Не заметил такого поведения. Абсолютно нормально, как и стандартное окно передвигается.

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


Название: Re: Window перемещение окна
Отправлено: BuRn от Июль 22, 2015, 12:38
Не заметил такого поведения. Абсолютно нормально, как и стандартное окно передвигается.

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


Название: Re: Window перемещение окна
Отправлено: Bepec от Июль 22, 2015, 13:56
Я в квике не силён вообще, но помоему там всё завязано на видеокарточку, на интегрированной у меня ни 1 пример не запускался.


Название: Re: Window перемещение окна
Отправлено: BuRn от Июль 22, 2015, 15:12
Я в квике не силён вообще, но помоему там всё завязано на видеокарточку, на интегрированной у меня ни 1 пример не запускался.
Да вы правы, у меня интегрированная видеокарта, но по сути это ед проблема