PyQt(Python+Qt)学习随笔:Qt中的部分类型QString、QList和指针、引用在PyQt中的实现方式

本文介绍了在使用PyQt进行开发时,如何处理Qt中特有的类型如QList和QString,指出PyQt使用Python原生类型如list和str作为替代,并解释了C语言中的指针和引用在PyQt中的处理方式。

在我们查阅Qt的文档资料时,可以看到Qt中的链表使用的是QList,字符串使用的是QString,但老猿在测试时发现这两个类型PyQt不支持,无法找到导入模块。实际上PyQt使用了Python的可迭代类型如list类型替换了QList,str替换了QString。

另外,对于C语言支持的指针和引用,在Python中无对应类型,因此PyQt实现时,是将这两者直接使用去除指针和引用的变量的数据类型替换,如int * 使用int替换。

所以如果在Qt文档中发现以上类型,直接按上述方法转换即可使用到PyQt中。

老猿Python,跟老猿学Python!

### ### PyQt5 中常用模块的含义与区别 PyQt5 是一个用于开发跨平台 GUI 应用程序的强大框架,它基于 Qt C++ 开发库封装而成。PyQt5 的模块化设计使得开发者可以根据需要导入不同的组件来构建应用程序。其中最常用的模块包括 `QtWidgets`、`QtGui` `QtCore`,它们分别承担着不同的功能职责。 #### QtCore 模块 `QtCore` 是 PyQt5 的核心模块,提供了非图形相关的基础类。其中包括基本的数据结构(如 `QString`、`QList`、`QMap`)、文件 I/O 支持、线程管理(如 `QThread` `QtConcurrent`)、定时器(`QTimer`)以及信号与槽机制的基础实现。它是所有其他模块的基础,即使不涉及图形界面的部分也依赖于该模块的功能 [^1]。 例如,使用 `QTimer` 实现简单的延时操作: ```python from PyQt5.QtCore import QTimer def delayed_print(): print("This message is printed after 2 seconds.") timer = QTimer() timer.singleShot(2000, delayed_print) ``` #### QtGui 模块 `QtGui` 模块负责图形渲染窗口系统集成。它包含处理图像、颜色、字体、绘图操作等的类,例如 `QPainter` 用于绘制 2D 图形,`QImage` `QPixmap` 用于图像处理,`QFont` 用于字体设置,`QPalette` 用于控件外观配色等。此外,它还提供与底层窗口系统的交互能力,如光标控制、屏幕信息获取等 [^1]。 以下是一个使用 `QPainter` 绘制简单文本的例子: ```python from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QPainter, QFont from PyQt5.QtCore import Qt class MyWidget(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QtGui Drawing Example") def paintEvent(self, event): painter = QPainter(self) painter.setFont(QFont("Arial", 20)) painter.drawText(self.rect(), Qt.AlignCenter, "Hello from QtGui!") app = QApplication([]) widget = MyWidget() widget.resize(400, 300) widget.show() app.exec_() ``` #### QtWidgets 模块 `QtWidgets` 模块是基于 `QtGui` 构建的高级用户界面组件集合。它包含了常见的 GUI 控件,如按钮(`QPushButton`)、标签(`QLabel`)、输入框(`QLineEdit`)、列表视图(`QListView`)、表格视图(`QTableView`)等。这些控件封装了复杂的交互逻辑,便于快速构建完整的桌面应用程序界面 [^1]。 下面是一个使用 `QtWidgets` 创建简单按钮界面的例子: ```python from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout def on_button_click(): print("Button clicked!") app = QApplication([]) window = QWidget() window.setWindowTitle("QtWidgets Example") layout = QVBoxLayout() button = QPushButton("Click Me") button.clicked.connect(on_button_click) layout.addWidget(button) window.setLayout(layout) window.resize(300, 200) window.show() app.exec_() ``` #### 模块之间的关系与选择建议 - **QtCore** 提供的是非图形的核心功能,适用于所有类型PyQt5 应用。 - **QtGui** 提供图形渲染支持,适合图像处理、绘图、动画等低层图形需求。 - **QtWidgets** 基于前两者之上,提供封装好的 UI 控件,适合快速开发标准桌面应用。 在实际项目中,通常会同时使用这三个模块。例如,一个带有按钮绘图区域的界面会同时使用 `QtWidgets` 来创建控件,`QtGui` 进行绘图操作,并通过 `QtCore` 处理定时任务或数据结构。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值