Russian Qt Forum
Ноябрь 23, 2024, 08:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Window перемещение окна  (Прочитано 3683 раз)
BuRn
Гость
« : Июль 21, 2015, 21:39 »

Добрый день. Есть следующая проблема, у окна срыт заголовок и все что с ним связанно, дабы сделать свой, вместе с кнопкой свернуть/развернуть/зарыть, пытаюсь сделать что бы за этот мой заговолок можно было перетаскивать окно, все бы ничего, задача тривиальная, взять глобальные координаты мыши, высчитать координаты окна и присвоить x y окна новые координаты. Окно перемещается, но адекватно это выглядит если только его перемещать медленно, если я начинаю перемещать окно чуть быстрее, его начинает дергать по всему экрану(прыгает), но в итоге конечно становится на то место, куда надо. Кто-нибудь сталкивался? Есть какое-нибудь решение этой проблемы?
Записан
Bepec
Гость
« Ответ #1 : Июль 22, 2015, 11:06 »

Тяжеловесная отрисовка или расчёты в основном потоке имеются?

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

PS конечно же код бы посмотреть, но как я понимаю слишком много получится кода Улыбающийся
Записан
BuRn
Гость
« Ответ #2 : Июль 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
                }
            }
        }
    }
}
Записан
Bepec
Гость
« Ответ #3 : Июль 22, 2015, 12:32 »

Не заметил такого поведения. Абсолютно нормально, как и стандартное окно передвигается.

Хотя конечно если очень очень очень быстро психоделически дергать мышкой, начинается мелькание, но это уже на мой взгляд нормальная ситуация при слишком быстром движении на экране - глаза не успевают. Но и обычное окно себя так ведёт.
Записан
BuRn
Гость
« Ответ #4 : Июль 22, 2015, 12:38 »

Не заметил такого поведения. Абсолютно нормально, как и стандартное окно передвигается.

Хотя конечно если очень очень очень быстро психоделически дергать мышкой, начинается мелькание, но это уже на мой взгляд нормальная ситуация при слишком быстром движении на экране - глаза не успевают. Но и обычное окно себя так ведёт.
У меня не дергается только если окно перемещать супер медленно
Записан
Bepec
Гость
« Ответ #5 : Июль 22, 2015, 13:56 »

Я в квике не силён вообще, но помоему там всё завязано на видеокарточку, на интегрированной у меня ни 1 пример не запускался.
Записан
BuRn
Гость
« Ответ #6 : Июль 22, 2015, 15:12 »

Я в квике не силён вообще, но помоему там всё завязано на видеокарточку, на интегрированной у меня ни 1 пример не запускался.
Да вы правы, у меня интегрированная видеокарта, но по сути это ед проблема
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.12 секунд. Запросов: 21.