• Qt move和setGeometry的区别


    movesetGeometry 都是用于管理窗口或小部件的位置的方法,通常在使用 Qt 编程时会用到。它们之间的主要区别在于:

    1. move 方法:这个方法用于设置小部件的左上角的坐标位置,它需要两个参数,即横坐标和纵坐标。使用 move 方法会改变小部件的位置,但不会改变其大小。例如,widget.move(100, 100) 会将小部件的左上角移动到坐标 (100, 100)。

    2. setGeometry 方法:这个方法用于同时设置小部件的位置和大小。它需要四个参数,分别是横坐标、纵坐标、宽度和高度。使用 setGeometry 方法会改变小部件的位置和大小。例如,widget.setGeometry(100, 100, 200, 150) 会将小部件的左上角移动到坐标 (100, 100),并将其大小设置为宽度 200 和高度 150。

    所以,如果您只需要改变小部件的位置而保持其大小不变,可以使用 move 方法。如果需要同时改变位置和大小,可以使用 setGeometry 方法。

    以下是一个使用 Qt 的 Python 绑定 PyQt5 的示例代码,演示了如何使用 movesetGeometry 方法:

    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_())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    在这个示例中,我们创建了一个名为 Example 的窗口应用,其中包含了两个子部件 widget1widget2widget1 使用了 setGeometry 来设置位置和大小,而 widget2 先使用了 move 设置了位置,然后使用 resize 设置了大小。

    运行这个示例,您将会看到一个窗口中包含了两个不同颜色的小部件,它们分别演示了 movesetGeometry 的效果。

  • 相关阅读:
    类型体系与基本数据类型(第三节)
    git 提交冲突
    Redis
    FVP和Juno平台的Memory Layout介绍
    零极点分析
    Idea如何上传项目至GitHub
    从零编写STM32H7的MDK SPI FLASH下载算法
    【简答题】JavaWeb必问10道简答题
    Leetcode 面试题 17.10. 主要元素
    Win11找不到DNS地址怎么办?Win11找不到DNS无法访问网页解决方法
  • 原文地址:https://blog.csdn.net/yao_hou/article/details/133920358