QWidget内容边距讲解

2023-12-21 12:11:42

一、QWidget内容边距是什么?

? QWidget内容边距是指在Qt GUI编程中,控件内文本区域或内容到该控件四边的距离。它分为四个独立的边距:左(left)、上(top)、右(right)和下(bottom)。这些边距允许开发者设置控件内容与控件边缘之间的空白空间,以便更好地布局和视觉呈现。


二、代码演示

  1. API

    在这里插入图片描述

  2. 直接显示label,不设置边距

    • 示例代码

      '''
          内容边距
      '''
      from PyQt5.Qt import *
      import sys
      
      
      app = QApplication(sys.argv)
      
      window = QWidget()
      window.setWindowTitle("内容边距的设定")
      window.resize(500, 500)
      
      #*******内容区域演示*******开始
      
      label = QLabel(window)
      label.setText("内容区域===========演示")
      label.resize(300, 300)
      label.setStyleSheet("background-color: cyan;")
      
      print(label.getContentsMargins())
      print(label.contentsRect())
      #*******内容区域演示*******结束
      
      window.show()
      sys.exit(app.exec_())
      
    • 结果
      在这里插入图片描述

    如图,窗口直接显示一个label控件,内容区域占整个控件区域的全部,故边距均为0;

    内容区域左上角在父控件区域的原点位置,即0,0;

    内容区域大小和父控件区域一样大小,即宽高均为300,300。

    故文字在内容区域内的显示规则可以看出为:水平靠左,垂直居中。

  3. 设置单边距

    • 示例代码

      '''
          内容边距
      '''
      from PyQt5.Qt import *
      import sys
      
      
      app = QApplication(sys.argv)
      
      window = QWidget()
      window.setWindowTitle("内容边距的设定")
      window.resize(500, 500)
      
      #*******内容区域演示*******开始
      
      label = QLabel(window)
      label.setText("内容区域===========演示")
      label.resize(300, 300)
      label.setStyleSheet("background-color: cyan;")
      
      label.setContentsMargins(100, 200, 0, 0)    #设置内容边距
      print(label.getContentsMargins())
      print(label.contentsRect())
      #*******内容区域演示*******结束
      
      window.show()
      sys.exit(app.exec_())
      
    • 结果
      在这里插入图片描述

    如图,由于设置了内容边距:label.setContentsMargins(100, 200, 0, 0) ,故:

    内容区域左上角在黄线所指左上角位置,即100,200处;

    内容区域大小为黄线区域,即宽高为200,100。

  4. 设置双边距

    • 示例代码

      '''
          内容边距
      '''
      from PyQt5.Qt import *
      import sys
      
      
      app = QApplication(sys.argv)
      
      window = QWidget()
      window.setWindowTitle("内容边距的设定")
      window.resize(500, 500)
      
      #*******内容区域演示*******开始
      
      label = QLabel(window)
      label.setText("内容区域===========演示")
      label.resize(300, 300)
      label.setStyleSheet("background-color: cyan;")
      
      # label.setContentsMargins(100, 200, 0, 0)    #设置内容边距
      label.setContentsMargins(100, 200, 80, 50)    #设置内容边距
      print(label.getContentsMargins())
      print(label.contentsRect())
      #*******内容区域演示*******结束
      
      window.show()
      sys.exit(app.exec_())
      
      
    • 结果
      在这里插入图片描述

    如图,由于设置了内容边距:label.setContentsMargins(100, 200, 80, 50) ,故:

    内容区域左上角在黄线所指左上角位置,即100,200处;

    内容区域右下角在蓝线所指左上角位置,即 距离右边距80,距离下边距50 处;

    内容区域大小为黄线区域,即宽高为120,50。

    同时注意:由于内容区域较小,不足以显示label标签的全部文字内容。


总结

内容边距是指显示内容的区域范围,对应的使用场景:调整控件内容边距, 使得显示更好看。需要注意的是,控件本身应留够对应的大小,内容边距设置才会正常显示。

文章来源:https://blog.csdn.net/CAUC_lin/article/details/135125657
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。