定制 Qt 设计器小部件的代码?
- 2025-04-15 09:16:00
- admin 原创
- 16
问题描述:
我需要向使用 Qt Designer 创建的表单中的图形小部件添加一些功能。
例如我通常会做这样的事情:
class custom_gv(QGraphicsView):
def __init__(self):
super().__init__()
def zoom(self):
# custom code here
但在本例中,图形视图是我在 Qt Designer 中创建的窗口的一部分。我知道您可以使用 Qt Designer 中的“提升为”功能,但我不知道如何在代码中使用它,尤其是考虑到我使用这种方法来使用 Qt Designer 窗口:
from PyQt5.uic import loadUiType
custom_window = loadUiType('ui.ui')
class Window(QMainWindow, custom_window):
def __init__(self):
QMainWindow.__init__(self)
custom_window.__init__(self)
self.setupUi(self)
那么当我使用 Qt Designer 时,我该如何定制窗口中图形视图的代码?
解决方案 1:
解决这个问题最常用的方法是使用“部件提升”功能。这允许你将 Qt Designer 中定义的部件替换为你自己的自定义类。具体步骤如下:
在 Qt Designer 中,选择QGraphicsView
要替换的 ,然后右键单击它并选择“提升为...”。在对话框中,将“提升的类名”设置为“custom_gv”,并将“头文件”设置为包含此类的模块的 Python 导入路径(例如“mypkg.widgets”)。然后点击“添加”和“提升”,您将在 Object Inspector 窗格中看到该类从“QGraphicsView”更改为“custom_gv”。
当Qt Designerui
文件转换成PyQt代码时,它会自动添加这样的导入语句:
from mypkg.widgets import custom_gv
然后在转换后的代码中它将替换如下内容:
self.graphicsView = QtWidgets.QGraphicsView(MainWindow)
用这个:
self.graphicsView = custom_gv(MainWindow)
因此,文件中的代码ui
对自定义类一无所知:它只是一个从其他地方导入的名称。这意味着您可以完全自由地以任何您喜欢的方式编写自定义类。
在 PyQt 中,此机制的工作方式与模块相同pyuic
。uic
和loadUi
函数loadUiType
生成的代码与 完全相同pyuic
。唯一的区别是,pyuic
工具将生成的代码写入文件,而uic
模块则直接通过 加载它exec
。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD