自定义小部件的占位符

war*_*iuc 14 qt qt4 pyqt pyqt4 pyside

我正在从*.ui文件加载QMainWIndow基础.此外,我有一个自定义小部件,我想放在窗体上的某个地方.目前我在.ui文件中放入一个空QVBoxLayout命名placeholder,并在QMainWindow子类中执行self.placeholder.addWidget(my_custom_widget)

在这种方法中我唯一不喜欢的是空布局没有自己的大小.我可以有一个布局一个细胞,并用虚拟控件(QLabel例如)与我想要的大小,更换这个小工具,然后添加我的自定义窗口小部件,但该方法似乎对我来说太多.

你完成这项任务的方法是什么?

我正在使用Python(PyQt4)

小智 26

这是一个关于如何推广小部件的简单小教程:

  1. 右键单击要用作占位符的小部件,然后选择" 提升为...".

    图片推广

  2. 填写Promoted Clases弹出对话框字段:
    • 基类名称:QWidget在这种情况下.
    • 提升的类名称:用于定义要为其创建占位符的窗口小部件的类名称,此处为MyWidget
    • 头文件:/path/to/MyWidget.pyMyWidget是放置文件的路径.图像路径
  3. 单击" 添加"后,将创建并显示该类,选择该类并单击Promote.你完成了推广.图像添加
  4. 以下是您应该在Object Inspector面板中看到的内容,该类的名称不再是QWidget,MyWidget而是.

    图片推广

  5. /path/to/MyWidget.py我的文件中有一个名为的类MyWidget,内容是这样的:

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    from PyQt4 import QtGui
    
    class MyWidget(QtGui.QWidget):
        def __init__(self, parent=None):
            super(MyWidget, self).__init__(parent)
    
            self.labelHello = QtGui.QLabel(self)
            self.labelHello.setText("This is My Widget")
    
            self.layout = QtGui.QHBoxLayout(self)
            self.layout.addWidget(self.labelHello)
    
    Run Code Online (Sandbox Code Playgroud)

  • 只是一句话:至少在我的安装中,库的完整文件路径不起作用。我不得不将其更改为 python 样式导入,然后它工作得很好! (4认同)