当前位置: 首页 > 面试题库 >

自定义Qt Designer小部件的代码?

华永逸
2023-03-14
问题内容

我需要以使用Qt Designer创建的形式向图形小部件添加一些功能。

例如,我通常会这样做:

class custom_gv(QGraphicsView):
    def __init__(self):
        super().__init__()

    def zoom(self):
        # custom code here

但是在这种情况下,图形视图是我在Qt
Designer中创建的窗口的一部分。我知道您可以在Qt设计器中使用“升级为”功能,但是我不知道如何在代码中使用它,尤其是考虑到我使用此方法来使用Qt设计器窗口:

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时,如何定制窗口中图形视图的代码?


问题答案:

解决此问题的最常见方法是使用小部件升级。这将允许您用自己的自定义类替换Qt Designer中定义的小部件。执行此操作的步骤如下:

在Qt Designer中,选择QGraphicsView要替换的对象,然后右键单击它,然后选择“ 升级为…” 。在对话框中,将
Promoted类名称 设置为“ custom_gv”,并将 Header文件 设置为包含该类的模块的python导入路径(例如“
mypkg.widgets”)。然后单击 AddPromote ,您将在Object Inspector窗格中看到该类从“
QGraphicsView”更改为“ custom_gv”。

当Qt Designerui文件转换为PyQt代码时,它将自动添加如下的import语句:

from mypkg.widgets import custom_gv

然后在转换后的代码中将替换如下内容:

    self.graphicsView = QtWidgets.QGraphicsView(MainWindow)

有了这个:

    self.graphicsView = custom_gv(MainWindow)

因此,ui文件中的代码对自定义类一无所知:它只是从其他位置导入的名称。这意味着您可以完全自由地以自己喜欢的任何方式编写自定义类。

在PyQt的,这种机制的工作原理与以同样的方式pyuic,因为它与不uic模块。该loadUiloadUiType作为功能产生完全相同的代码pyuic一样。唯一的区别是该pyuic工具将生成的代码写入文件,而uic模块直接通过加载它exec



 类似资料:
  • 介绍 (Introduction) UiBinder是一个旨在分离功能和用户界面视图的框架。 UiBinder框架允许开发人员将gwt应用程序构建为HTML页面,并在其中配置GWT小部件。 UiBinder框架使与UI设计人员的协作变得更容易,他们比XML源代码更熟悉XML,HTML和CSS UIBinder提供了一种定义用户界面的声明方式。 UIBinder从UI中分离出程序逻辑。 UIBind

  • GWT提供了三种创建自定义用户界面元素的方法。 有三种一般策略可供遵循 - Create a widget by extending Composite Class - 这是创建自定义小部件的最常用和最简单的方法。 在这里,您可以使用现有小部件来创建具有自定义属性的复合视图。 Create a widget using GWT DOM API in JAVA - 以这种方式创建GWT基本窗口小部件

  • 本文向大家介绍微信小程序自定义顶部组件customHeader的示例代码,包括了微信小程序自定义顶部组件customHeader的示例代码的使用技巧和注意事项,需要的朋友参考一下 1、开启配置自定义顶部 在app.json的文件window配置"navigationStyle": "custom"属性即可 2、自定义顶部计算原理 2.1 获取系统状态栏的高度和屏幕宽度 使用wx.getSystem

  • PyQt6 已经有丰富的部件,但是没有任何工具包能提供开发者开发应用中需要的全部部件。工具包通常只提供最常见的小部件,如按钮、文本小部件或滑块。如果需要满足特定需求的小部件,我们必须自己创建。 自定义小部件是使用工具包提供的绘图工具创建的。基本上有两种方式:程序员可以修改或增强现有的小部件,或者他可以从头开始创建自定义小部件。 PyQt6 烧录部件 这个部件可以在 Nero、K3B 或其他的 CD

  • 到目前为止,我发现有一些关于设备控件的有用指南,这是一个非常适合domotics和自动化的特性。例如,关于设备控制的官方文章显示了一个完整的Power菜单,带有信用卡刷卡和domotics控制。 我对开发一个自定义开源小部件来浏览fildelity(条形码)卡片很感兴趣。我已经看到快速访问钱包功能是一个用来显示支付方式的刷卡,但我有充分的理由不走这条路。首先,它是为持有NFC权限的支付应用程序设计

  • 我已经将问题从居中改为自定义的位置。 因为我注意到实际上是居中的,根据文档,它只是添加了页签。 但是如果您希望在避开安全区域时设置一个制表符,或者选项卡中的元素不是(自动)居中对齐,我现在找不到方法。 我还尝试将选项卡包装在小部件中,并获得属性集,但似乎所有的高度都避开了安全区域(通过添加一个常量)。我尝试用小部件包装整个,但是安全区域变成了黑色,我们实际上希望tab bat变得更高,然后在这个更