先上演示效果,不過會有閃爍,暫時想到不到是什么問題,

去除標題欄
Window {
flags: Qt.Window | Qt.FramelessWindowHint //隱藏標題欄
}
點擊標題欄移動視窗,我在視窗的最上方加了一個rectangle
Rectangle {
id:backRect;
anchors.fill: parent;
Rectangle {//用來移動的標題欄
id:moveTitle;
anchors.top: backRect.top;
anchors.left: backRect.left;
anchors.right: backRect.right;
height: 35;
MouseArea{ //設定可以拖動沒有標題的登錄界面. /*這個要放在上面,放在最下面的話,會把上面全部屏蔽掉的*/
anchors.fill:parent
property point clickPos: "0,0" //定義一個點
onPressed: {
clickPos = Qt.point(mouseX, mouseY)
}
onPositionChanged: { //屬性的改變
var delta = Qt.point(mouseX-clickPos.x, mouseY-clickPos.y)
root.setX(root.x+delta.x)
root.setY(root.y+delta.y)
}
}
}
拖動改變大小實作了左下右,還有左下,右下,左上,右上,實作大概差不多,用不著,就不實作了,

需要注意的是,向左拖動的代碼,因為整體視窗的坐標左上角是(0,0),
所以在拖動的時候會改變視窗的坐標,cursorShape可以改變滑鼠的樣子,
Rectangle {//向左拖動
id:leftSizeChange;
anchors.top: moveTitle.bottom;
anchors.bottom: downSizeChange.top;
anchors.left: backRect.left;
// height: root.height-35-downSizeChange.height;
width: 15;
color: "yellow"
MouseArea{ //設定可以拖動沒有標題的登錄界面. /*這個要放在上面,放在最下面的話,會把上面全部屏蔽掉的*/
anchors.fill:parent
property point clickPos: "0,0" //定義一個點
cursorShape:Qt.SizeHorCursor
onPressed: {
clickPos = Qt.point(mouseX, mouseY)
}
onPositionChanged: { //屬性的改變
var delta = Qt.point(mouseX-clickPos.x, mouseY-clickPos.y)
if((root.width-delta.x)>root.minimumWidth)
{
root.setX(root.x+delta.x)
root.setWidth(root.width-delta.x)
}
else
root.setWidth(root.minimumWidth)
}
}
}
Rectangle {//向下拖動
id:downSizeChange;
anchors.bottom: backRect.bottom;
anchors.left: leftSizeChange.right;
anchors.right: rightSizeChange.left;
height: 10;//遠離發送的按鈕
color: "green"
MouseArea{ //設定可以拖動沒有標題的登錄界面. /*這個要放在上面,放在最下面的話,會把上面全部屏蔽掉的*/
anchors.fill:parent
property point clickPos: "0,0" //定義一個點
cursorShape:Qt.SizeVerCursor
onPressed: {
clickPos = Qt.point(mouseX, mouseY)
}
onPositionChanged: { //屬性的改變
var delta = Qt.point(mouseX-clickPos.x, mouseY-clickPos.y)
if((root.height+delta.y)>root.minimumHeight)
// root.setHeight(root.height+delta.y)
root.height += delta.y
else
root.setHeight(root.minimumHeight)
}
}
}
Rectangle {//向右拖動
id:rightSizeChange;
width: 15;
anchors.right: backRect.right;
anchors.top:moveTitle.bottom;
anchors.bottom: downSizeChange.top;
color: "yellow";
MouseArea{ //設定可以拖動沒有標題的登錄界面. /*這個要放在上面,放在最下面的話,會把上面全部屏蔽掉的*/
anchors.fill:parent
property point clickPos: "0,0" //定義一個點
cursorShape:Qt.SizeHorCursor
onPressed: {
clickPos = Qt.point(mouseX, mouseY)
}
onPositionChanged: { //屬性的改變
var delta = Qt.point(mouseX-clickPos.x, mouseY-clickPos.y)
if((root.width+delta.x)>root.minimumWidth)
{
// root.setX(root.x+delta.x)
root.setWidth(root.width+delta.x)
}
else
root.setWidth(root.minimumWidth)
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/22388.html
標籤:其他
