我的应用程序需要一个带有标题按钮的组合框.或等同的东西.
这是我的用例.
该应用程序读取数据结构并构建一个适当的面板.可以通过此属性面板添加/删除某些属性.
如果属性是终端,如字符串或整数,则该属性将表示为经典标签以及正确的小部件.我可以轻松地为此布局添加删除按钮.
但是如果属性更复杂并且本身具有一些子属性,则它表示为组合框.原始的QGroupBox只允许一个字符串作为标题,而我想在那里添加一个删除按钮.
我是QT的新手,可能会遗漏一些东西,任何想法?
PyQt提供的小部件是基本的构建块和便利小部件,可以满足常见的用法和需求.但是当你开始想要自定义小部件时,你就可以自由地继承一些接近的东西,并组成你自己的自定义小部件.
让我们来看看QGroupBox.它基本上是一个QFrame,顶部是QLabel.然后该类包装了一些允许您设置此标签文本的方法.这个基本小部件将从以下开始:
group = QtGui.QGroupBox()
group.setTitle("FOO")
Run Code Online (Sandbox Code Playgroud)
我们可以做的是采用QWidget,并添加一个带有空白标签的QGroupBox.然后将一个按钮放在父窗口小部件的绝对位置.我们可以使用QFrame,但使用QGroupBox可以获得您想要的即时样式.
class ButtonGroupBox(QtGui.QWidget):
def __init__(self, parent=None):
super(ButtonGroupBox, self).__init__(parent=parent)
self.layout = QtGui.QVBoxLayout(self)
self.layout.setContentsMargins(0,24,0,0)
self.groupBox = QtGui.QGroupBox(self)
self.button = QtGui.QPushButton("FOO", parent=self)
self.layout.addWidget(self.groupBox)
self.button.move(0, -4)
Run Code Online (Sandbox Code Playgroud)
您可以使用允许您更改按钮文本的方法来扩展此自定义类.顶部窗口小部件的边距是必要的,为您提供额外的空间来布局GroupBox上方的按钮