Окно мерцает при изменении размера QMLC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Окно мерцает при изменении размера QML

Сообщение Anonymous »

Окно приложения мерцает, когда я меняю его размер
Изображение

часть кода, отвечающая за изменение размера

Код: Выделить всё

        MouseArea { // изменение размера top
width: parent.width
height: 2

cursorShape: Qt.SizeVerCursor

onPressed: {
mainWindow.previousY = mouseY
}

onPositionChanged: {
mainWindow.setHeight(mainWindow.height - (mouseY - mainWindow.previousY))
}
}
полный код

Код: Выделить всё

import QtQuick 2.15
import QtQuick.Controls 2.15
import "../resources/"

ApplicationWindow {
id: mainWindow
visible: true
width: 640
height: 480

flags: Qt.FramelessWindowHint // Отключение стандартного обрамления окна

property int previousX // переменная хранящая X зажатого курсора
property int previousY // переменная хранящая Y зажатого курсора

readonly property real toolBarHeight: toolBar.height // переменная хранящая размер toolBar

readonly property real maxWidthSize: Screen.desktopAvailableWidth // переменная хранящая максимальную ширина окна
readonly property real maxHeightSize: Screen.desktopAvailableHeight // переменная хранящая максимальную длину окна

property real lastWidthSize: 640 // переменная хранящая последнюю не максимальную ширина окна
property real lastHeightSize: 480 // переменная хранящая последнюю не максимальную длину окна

property real lastWindowX: mainWindow.x // переменная хранящая последее положение окна по X
property real lastWindowY: mainWindow.y // переменная хранящая последнее положение окна по Y

Rectangle {
id: toolBar
width: parent.width
height: 34
color: Colors.toolBarColor

MouseArea { // перемещение окна
anchors.fill: parent

onPressed: {
mainWindow.previousX = mouseX
mainWindow.previousY = mouseY
}

onDoubleClicked: {
if(mainWindow.maxWidthSize == mainWindow.width && mainWindow.maxHeightSize == mainWindow.height)
{
mainWindow.setWidth(mainWindow.lastWidthSize)
mainWindow.setHeight(mainWindow.lastHeightSize)
mainWindow.setX(mainWindow.lastWindowX)
mainWindow.setY(mainWindow.lastWindowY)
}
else
{
mainWindow.setWidth(mainWindow.maxWidthSize)
mainWindow.setHeight(mainWindow.maxHeightSize)
}
}

onPositionChanged: {
mainWindow.setX(mainWindow.x + (mouseX - mainWindow.previousX))
mainWindow.setY(mainWindow.y + (mouseY - mainWindow.previousY))
mainWindow.lastWindowX = mainWindow.x
mainWindow.lastWindowY = mainWindow.y
}
}

MouseArea { // изменение размера top
width: parent.width
height: 2

cursorShape: Qt.SizeVerCursor

onPressed: {
mainWindow.previousY = mouseY
}

onPositionChanged: {
mainWindow.setHeight(mainWindow.height - (mouseY - mainWindow.previousY))
}
}
}
}
когда меняю измерение двойным кликом (верхняя MouseArea) таких проблем не замечаю, думаю проблема в том, что приложение все время перерисовывается при изменении размера , можно ли это как-то исправить?
OC Ubuntu 24.04.1 LTS

Подробнее здесь: https://stackoverflow.com/questions/792 ... sizing-qml
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»