Qt Creator を使用して Plugin ビルダーから生成された 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