我已经使用 Qt Creator 扩展了 Plugin builder 生成的 UI 文件。刚刚在表单中添加了一些复选框和一个名为 layercombo 的组合框。该应用程序名为 jacktest.py。它使用中间文件 jackdialog.py(从插件生成器生成,保持不变)。
编译了 UI 文件和资源文件。然后在插件中添加了一些代码并进行了测试。在 QMessagebox 中获取可用的层名称是没有问题的。但是如何将这些添加到组合框中?应该很简单,但没有选项成功引用组合框。
错误消息:AttributeError:jacktest 实例没有属性“layercombo”。
我最近尝试的结果:
# run method that performs all the real work
def run(self):
# create and show the dialog
dlg = jacktestDialog()
# show the dialog
dlg.show()
result = dlg.exec_()
for layer in self.iface.legendInterface().layers():
if layer.type() == QgsMapLayer.VectorLayer:
QMessageBox.information( self.iface.mainWindow(), "Info", layer.name())
self.layercombo.Items.Insert(0, layer.name())
# See if OK was pressed
if result == 1:
# do something useful (delete the line containing pass and
# substitute with your code
pass