当前位置: 首页 > article >正文

pyQT学习笔记——Qt常用组件与绘图类的使用指南

Qt常用组件与绘图类的使用指南

    • 一、大小策略(Size Policy)
      • 1.1 大小策略概述
      • 1.2 具体参数
      • 1.3 其他常见策略
      • 1.4 伸展值的作用
    • 二、常用组件的使用
      • 2.1 QSpinBox 和 QComboBox
        • 示例代码
      • 2.2 QDialog
        • 示例代码
      • 2.3 QTableView
        • 示例代码
    • 三、QPainter 类介绍
      • 3.1 QPainter 的使用
        • 示例代码
      • 3.2 QPainter 的功能

一、大小策略(Size Policy)

1.1 大小策略概述

大小策略是Qt中用于控制控件在布局中如何调整大小的机制。它决定了控件在水平和垂直方向上的行为。通过设置大小策略,可以实现控件的自适应布局,使界面更加灵活。

1.2 具体参数

sizePolicy: [Preferred, Preferred, 0, 0]
  • 水平策略Preferred
    控件会根据内容调整大小,但不会强制填充可用空间。如果布局中有额外空间,控件不会扩展;如果空间不足,控件会缩小到最小大小。

  • 垂直策略Preferred
    同水平策略,控件会根据内容调整大小,但不会强制填充可用空间。

  • 水平伸展0
    表示控件在水平方向上不会扩展以填充额外空间。

  • 垂直伸展0
    表示控件在垂直方向上不会扩展以填充额外空间。

1.3 其他常见策略

  • Fixed:控件大小固定,无法调整。
  • Minimum:控件大小不能小于最小大小,但可以扩展。
  • Maximum:控件大小不能超过最大大小,但可以缩小。
  • Expanding:控件会尽可能扩展以填充可用空间。
  • MinimumExpanding:控件大小不能小于最小大小,但会尽可能扩展。

1.4 伸展值的作用

伸展值用于控制多个控件在布局中分配额外空间的比例。例如,如果两个控件的水平伸展值分别为12,则额外空间会按1:2的比例分配。

二、常用组件的使用

2.1 QSpinBox 和 QComboBox

QSpinBoxQComboBox是Qt中常用的输入组件,分别用于数值输入和下拉选择框。

示例代码
from PyQt5 import QtWidgets

# 创建一个窗口
self.win = QtWidgets.QWidget()

# 创建一个 QSpinBox
self.win_spin_box = QtWidgets.QSpinBox()
self.win_spin_box.setRange(0, 100)  # 设置数值范围
self.win_spin_box.setSingleStep(1)  # 设置步长

# 创建一个 QComboBox
self.win_combo_box = QtWidgets.QComboBox()
self.win_combo_box.addItems(["选项1", "选项2", "选项3"])  # 添加选项

2.2 QDialog

QDialog是Qt中用于创建对话框的类,通常用于弹出提示框或输入框。

示例代码
from PyQt5.QtWidgets import QMessageBox

# 弹出一个消息框
QMessageBox.information(self.win, "标题", "这是一个消息框")

2.3 QTableView

QTableView是一个功能强大的表格组件,支持View-Model分离的设计方式。通过绑定自定义的TableModel,可以实现复杂的数据展示。

示例代码
from PyQt5.QtWidgets import QTableView
from PyQt5.QtCore import QAbstractTableModel

# 创建一个自定义的TableModel
class MyTableModel(QAbstractTableModel):
    def __init__(self, data, header):
        super().__init__()
        self._data = data
        self._header = header

    def rowCount(self, parent=None):
        return len(self._data)

    def columnCount(self, parent=None):
        return len(self._header)

    def data(self, index, role):
        if role == QtCore.Qt.DisplayRole:
            return self._data[index.row()][index.column()]
        return None

    def headerData(self, section, orientation, role):
        if role == QtCore.Qt.DisplayRole:
            if orientation == QtCore.Qt.Horizontal:
                return self._header[section]
        return None

# 使用 QTableView 绑定数据
data = [[1, 2, 3], [4, 5, 6]]
header = ["列1", "列2", "列3"]
model = MyTableModel(data, header)
table = QTableView()
table.setModel(model)

三、QPainter 类介绍

QPainter是Qt中用于图形绘制的类,支持绘制常见的几何形状(如圆、矩形、文本等),并支持颜色、旋转、平移等操作。

3.1 QPainter 的使用

所有QWidget类都继承了paintEvent方法,绘制代码需要在paintEvent方法中完成。

示例代码
from PyQt5.QtWidgets import QWidget
from PyQt5.QtGui import QPainter, QPen
from PyQt5.QtCore import Qt

class MyWidget(QWidget):
    def paintEvent(self, paintEvent):
        painter = QPainter(self)  # 创建 QPainter 对象
        painter.setPen(QPen(Qt.blue, 2))  # 设置画笔颜色和宽度
        painter.drawRect(10, 10, 100, 100)  # 绘制矩形
        painter.drawEllipse(120, 10, 50, 50)  # 绘制椭圆
        painter.drawText(10, 150, "Hello, QPainter!")  # 绘制文本

3.2 QPainter 的功能

  • 绘制形状:矩形、椭圆、多边形等。
  • 设置颜色:通过QPenQBrush设置线条颜色和填充颜色。
  • 变换操作:支持旋转、平移、缩放等操作。
  • 状态复位:可以保存和恢复绘制状态。


http://www.kler.cn/a/588527.html

相关文章:

  • 【商城实战(36)】UniApp性能飞升秘籍:从渲染到编译的深度优化
  • 使用memmove优化插入排序
  • 软件架构设计习题及复习
  • 计算机网络——NAT
  • 【Linux】Socket 编程 TCP
  • 《Python深度学习》第四讲:计算机视觉中的深度学习
  • 在Simulink中将Excel数据导入可变负载模块的方法介绍
  • 工程化与框架系列(30)--前端日志系统实现
  • cursor全栈网页开发最合适的技术架构和开发语言
  • JVM系统变量的妙用
  • 树莓派 连接 PlutoSDR 教程
  • Typedef 与enum的使用
  • 【人工智能基础2】人工神经网络、卷积神经网络基础、循环神经网络、长短时记忆网络
  • [蓝桥杯]花束搭配【算法赛】
  • python+MySQL+HTML实现产品管理系统
  • Ollama+DeepSeek+NatCross内网穿透本地部署外网访问教程
  • Flutter:竖向步骤条,类似查看物流组件
  • 一周学会Flask3 Python Web开发-SQLAlchemy更新数据操作-班级模块
  • Windows 下免安装 PostgreSQL 16、PostGIS 安装
  • Cursor插件市场打不开解决