在所有情况下,似乎都没有通用的方法可以使小部件保持方形。您必须选择一个:
class MyWidget(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
policy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
policy.setHeightForWidth(True)
self.setSizePolicy(policy)
...
def heightForWidth(self, width):
return width
...
Run Code Online (Sandbox Code Playgroud)
class MyWidget(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
...
def resizeEvent(self, e):
setMinimumWidth(height())
...
Run Code Online (Sandbox Code Playgroud)
只要有这种可能性,此类小部件将保持正方形。
如前所述,在其他情况下,您确实应该考虑更改视口。鼠标事件应该没什么大问题,只需找到小部件的中心(将尺寸除以2),min(width, height)然后从那里找到并移动即可。您应该能够通过坐标验证鼠标事件。QMouseEvent.accept仅当事件通过了验证并且您使用了事件时,才可以调用。
| 归档时间: |
|
| 查看次数: |
5219 次 |
| 最近记录: |