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
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
MouseArea { // изменение размера top width: parent.width height: 2
cursorShape: Qt.SizeVerCursor
onPressed: { mainWindow.previousY = mouseY }
onPositionChanged: { mainWindow.setHeight(mainWindow.height - (mouseY - mainWindow.previousY)) } } } } [/code] когда меняю измерение двойным кликом (верхняя MouseArea) таких проблем не замечаю, думаю проблема в том, что приложение все время перерисовывается при изменении размера , можно ли это как-то исправить? OC Ubuntu 24.04.1 LTS