我已经使用qt / qml完成了无框窗口,但现在我无法使用win7窗口连接器(向右和向左转角)并通过将窗口拖动到屏幕顶部来最大化窗口。有办法处理这些信号吗?
main.py
class MainDialog(QtQuick.QQuickView):
def __init__(self, parent = None):
super(MainDialog, self).__init__(parent)
self.maxed = False
self.ctx = self.engine().rootContext()
self.ctx.setContextProperty("view", self)
self.ctx.setContextProperty("maximized", self.maxed)
self.setSource(QtCore.QUrl("Main.qml"))
self.setResizeMode(QtQuick.QQuickView.SizeRootObjectToView)
self.setFlags(QtCore.Qt.FramelessWindowHint
| QtCore.Qt.Window
| QtCore.Qt.WindowSystemMenuHint
)
self.setColor(QtGui.QColor(QtCore.Qt.transparent))
self.engine().quit.connect(App.quit)
main.qml
import QtQuick 2.1
Rectangle {
id: main
width: 500
height: 600
visible: true
border.color: "black"
opacity: .95
MouseArea {
anchors.fill: frame
onPressed: {
frame.mouse_x = mouseX
frame.mouse_y = mouseY
}
onPositionChanged: {
view.x += mouse.x - frame.mouse_x
view.y += mouse.y - frame.mouse_y
}
onDoubleClicked: !maximized ? view.set_max()
: view.set_normal()
}
}
答案 0 :(得分:2)
如果您的主窗口没有装饰,则用户无法拖动任何内容,因此无法移动或调整窗口大小。
对于移动窗口,您可以提供移动窗口的窗口小部件,最简单的情况是在窗口小部件上处理鼠标单击事件将窗口转换为"移动",在这种情况下窗口的鼠标移动处理程序根据鼠标的位置移动窗口。在发布时,转换回"非移动"。或者,您可以将应用程序背景上的鼠标单击解释为"窗口拖动"然后你将派生和处理鼠标事件来移动窗口。
要调整大小,您必须在窗口中创建一些项目,用户可以拖动以调整大小(除非您想使用滚轮但不遵循标准界面设计)。单击该项目时,您将再次处理鼠标事件,并将其解释为"窗口调整大小"。