如何在 PyQT 中定位动态创建的小部件

How to position the dynamically created widgets in PyQT

我正在使用 PyQGIS 根据图层中字段名称的数量动态创建小部件。小部件已成功创建,但未正确定位。有没有办法使用 Python 将 lineedit 框定位到中间?下面是我动态创建小部件的代码。

selectedLayerIndex = self.dlg.comboBox.currentIndex()
selectedLayer = layers[selectedLayerIndex]
fields = selectedLayer.pendingFields()
fieldnames = [field.name() for field in fields]
for i,field in enumerate(fieldnames):
    self.labels = QLabel()
    self.linedit = QLineEdit()
    self.labels.setText(field)
    self.linedit.setFixedWidth(100)
    self.dlg.verticalLayout.addWidget(self.labels)
    self.dlg.verticalLayout.addWidget(self.linedit)

我希望文本框像这样放置

如果你想获得相同顺序的表格你必须使用QFormLayout

selectedLayerIndex = self.dlg.comboBox.currentIndex()
selectedLayer = layers[selectedLayerIndex]
fields = selectedLayer.pendingFields()
fieldnames = [field.name() for field in fields]
flay = QFormLayout()
for field in fieldnames:
    le = QLineEdit()
    le.setFixedWidth(100)
    flay.addRow(field, le)
self.dlg.verticalLayout.addLayout(flay)