自定义小部件未出现在 Main Window
Custom widget does not appear on Main Window
我正在尝试创建自定义小部件并使其显示在主 window 的网格布局中。
class MyCustomWidget(QtGui.QWidget):
def __init__(self):
super(MyCustomWidget, self).__init__()
self.setupUi()
def setupUi(self):
self.testText = QtGui.QLabel()
font = QtGui.QFont()
font.setPointSize(8)
font.setBold(True)
font.setWeight(75)
self.testText.setFont(font)
self.testText.setAlignment(QtCore.Qt.AlignCenter)
self.testText.setObjectName(_fromUtf8("patientText"))
self.testText.setText("Test")
class UIMainWindow(object):
def setupUi(self, MainWindow):
...
self.gridLayout = QtGui.QGridLayout()
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
...
self.test = MyCustomWidget()
self.gridLayout.addWidget(self.test)
当我 运行 这段代码时,主要 window 出现,但我创建的小部件没有任何内容。如果我只是将 QLabel 添加到网格布局,它就会出现。
照原样,您的 MyCustomWidget
只是一个标准小部件,其属性 testText
包含 QLabel
。如果您希望它包含将显示在主 window 上的子小部件,您需要实例化一个布局,将子小部件添加到布局,然后将布局添加到 MyCustomWidget
:
在MyCustomWidget的setupUi的最后
self.gridLayout = QtGui.QGridLayout()
self.gridLayout.setObjectName(_fromUtf8("MyCustomWidgetLayout"))
self.gridLayout.addWidget(self.testText)
#add all other widgets here
self.setLayout(self.gridLayout)
您还可以通过在父布局上调用 addLayout
方法并将其传递给子布局来创建嵌入式布局!
我正在尝试创建自定义小部件并使其显示在主 window 的网格布局中。
class MyCustomWidget(QtGui.QWidget):
def __init__(self):
super(MyCustomWidget, self).__init__()
self.setupUi()
def setupUi(self):
self.testText = QtGui.QLabel()
font = QtGui.QFont()
font.setPointSize(8)
font.setBold(True)
font.setWeight(75)
self.testText.setFont(font)
self.testText.setAlignment(QtCore.Qt.AlignCenter)
self.testText.setObjectName(_fromUtf8("patientText"))
self.testText.setText("Test")
class UIMainWindow(object):
def setupUi(self, MainWindow):
...
self.gridLayout = QtGui.QGridLayout()
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
...
self.test = MyCustomWidget()
self.gridLayout.addWidget(self.test)
当我 运行 这段代码时,主要 window 出现,但我创建的小部件没有任何内容。如果我只是将 QLabel 添加到网格布局,它就会出现。
照原样,您的 MyCustomWidget
只是一个标准小部件,其属性 testText
包含 QLabel
。如果您希望它包含将显示在主 window 上的子小部件,您需要实例化一个布局,将子小部件添加到布局,然后将布局添加到 MyCustomWidget
:
在MyCustomWidget的setupUi的最后
self.gridLayout = QtGui.QGridLayout()
self.gridLayout.setObjectName(_fromUtf8("MyCustomWidgetLayout"))
self.gridLayout.addWidget(self.testText)
#add all other widgets here
self.setLayout(self.gridLayout)
您还可以通过在父布局上调用 addLayout
方法并将其传递给子布局来创建嵌入式布局!