move 和 setGeometry 都是用于管理窗口或小部件的位置的方法,通常在使用 Qt 编程时会用到。它们之间的主要区别在于:
move 方法:这个方法用于设置小部件的左上角的坐标位置,它需要两个参数,即横坐标和纵坐标。使用 move 方法会改变小部件的位置,但不会改变其大小。例如,widget.move(100, 100) 会将小部件的左上角移动到坐标 (100, 100)。
setGeometry 方法:这个方法用于同时设置小部件的位置和大小。它需要四个参数,分别是横坐标、纵坐标、宽度和高度。使用 setGeometry 方法会改变小部件的位置和大小。例如,widget.setGeometry(100, 100, 200, 150) 会将小部件的左上角移动到坐标 (100, 100),并将其大小设置为宽度 200 和高度 150。
所以,如果您只需要改变小部件的位置而保持其大小不变,可以使用 move 方法。如果需要同时改变位置和大小,可以使用 setGeometry 方法。
以下是一个使用 Qt 的 Python 绑定 PyQt5 的示例代码,演示了如何使用 move 和 setGeometry 方法:
import sys
from PyQt5.QtWidgets import QApplication, QWidget
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(100, 100, 300, 200)
self.setWindowTitle('Move vs setGeometry')
# 创建两个子部件
self.widget1 = QWidget(self)
self.widget2 = QWidget(self)
self.widget1.setGeometry(10, 10, 100, 100) # 使用setGeometry
self.widget1.setStyleSheet("background-color: red;")
self.widget2.move(150, 10) # 使用move
self.widget2.resize(100, 100) # 设置大小
self.widget2.setStyleSheet("background-color: blue;")
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在这个示例中,我们创建了一个名为 Example 的窗口应用,其中包含了两个子部件 widget1 和 widget2。widget1 使用了 setGeometry 来设置位置和大小,而 widget2 先使用了 move 设置了位置,然后使用 resize 设置了大小。
运行这个示例,您将会看到一个窗口中包含了两个不同颜色的小部件,它们分别演示了 move 和 setGeometry 的效果。