{"id":7783,"date":"2018-12-05T07:30:05","date_gmt":"2018-12-05T10:30:05","guid":{"rendered":"http:\/\/www.fernandoquadro.com.br\/html\/?p=7783"},"modified":"2018-12-05T08:06:01","modified_gmt":"2018-12-05T11:06:01","slug":"desenvolvimento-de-plugins-do-qgis-criando-interface-grafica-parte-4","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2018\/12\/05\/desenvolvimento-de-plugins-do-qgis-criando-interface-grafica-parte-4\/","title":{"rendered":"Desenvolvimento de plugins do QGIS: Criando interface gr\u00e1fica"},"content":{"rendered":"<p>Depois de mexer no <a href=\"http:\/\/www.fernandoquadro.com.br\/html\/2018\/12\/04\/desenvolvimento-de-plugins-do-qgis-vizinho-mais-proximo-parte-3\/\" rel=\"noopener\" target=\"_blank\">console do QGIS Python<\/a> e implementar a an\u00e1lise de<a href=\"http:\/\/www.fernandoquadro.com.br\/html\/2018\/12\/04\/desenvolvimento-de-plugins-do-qgis-vizinho-mais-proximo-parte-3\/\" rel=\"noopener\" target=\"_blank\"> vizinho mais pr\u00f3ximo<\/a>, vamos criar uma GUI muito simples para o plug-in.<\/p>\n<p>Embora os documentos da API do QGIS levassem algumas horas para serem entendidos, o ecossistema do PyQGIS me ajudou muito. Aqui vem a lista de ferramentas que voc\u00ea deve incorporar ao seu processo de desenvolvimento o mais r\u00e1pido poss\u00edvel.<\/p>\n<p><strong>1. CONSTRUTOR DE PLUG-INS<\/strong><\/p>\n<p>O <a href=\"https:\/\/plugins.qgis.org\/plugins\/pluginbuilder\/\" rel=\"noopener\" target=\"_blank\">QGIS Plugin Builder<\/a> \u00e9 um plugin criado para criar outros plugins. Ele permite voc\u00ea cri\u00e1-lo em minutos e que voc\u00ea codifique em vez de configurar coisas que voc\u00ea n\u00e3o quer configurar. Note que voc\u00ea deve colocar o plugin dentro da pasta de plugins do QGIS (o padr\u00e3o \u00e9 ~\/.qgis2\/python\/plugins) no Linux.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2018\/11\/qgis.gif\" alt=\"\" width=\"1260\" height=\"793\" class=\"aligncenter size-full wp-image-7784\" \/><\/p>\n<p>Lembre-se de rodar <strong>pyrcc4 -o resources.py resources.qrc<\/strong> dentro da pasta do seu plugin antes de adicion\u00e1-lo ao QGIS.<\/p>\n<p><strong>2. PLUGIN RELOADER<\/strong><\/p>\n<p>O <a href=\"https:\/\/plugins.qgis.org\/plugins\/plugin_reloader\/\" rel=\"noopener\" target=\"_blank\">QGIS Plugin Reloader<\/a> \u00e9 um plugin (possivelmente criado com o QGIS Plugin Builder) que permite que voc\u00ea atualize (reload) o seu plugin enquanto voc\u00ea codifica. Nenhuma reinicializa\u00e7\u00e3o do QGIS \u00e9 necess\u00e1ria.<\/p>\n<p><strong>3. QT DESIGNER<\/strong><\/p>\n<p>O <a href=\"https:\/\/www.qt.io\/qt-features-libraries-apis-tools-and-ide\/\" rel=\"noopener\" target=\"_blank\">Qt Designer<\/a> vem com o pacote <strong>qt4-designer<\/strong> no Ubuntu. Ele \u00e9 feito sob medida para projetar e construir GUIs a partir de componentes do Qt que podem ser usados \u200b\u200bdentro do QGIS. Sua interface de arrastar e soltar permite prototipar rapidamente.<\/p>\n<p>Gra\u00e7as ao Plugin Builder, voc\u00ea pode carregar o arquivo attribute_transfer_dialog_base.ui diretamente no Qt Designer e ajust\u00e1-lo \u00e0s suas necessidades.<\/p>\n<p><center><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2018\/11\/qt.gif\" alt=\"\" width=\"408\" height=\"245\" class=\"aligncenter size-full wp-image-7787\" \/><\/center><\/p>\n<p>N\u00e3o \u00e9 preciso muito, apenas um QLineEdit e alguns QComboBoxwidgets. Eles estar\u00e3o dispon\u00edveis no arquivo attribute_transfer.py como propriedades da classe AttributeTransferDialog.<\/p>\n<p>O nome do widget pode ser personalizado na barra lateral direita e eu aconselho voc\u00ea a fazer isso. Eu escolhi o seguinte:<\/p>\n<p><center><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2018\/11\/qt.png\" alt=\"\" width=\"585\" height=\"247\" class=\"aligncenter size-full wp-image-7788\" srcset=\"https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2018\/11\/qt.png 585w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2018\/11\/qt-300x127.png 300w\" sizes=\"auto, (max-width: 585px) 100vw, 585px\" \/><\/center><\/p>\n<p>Uma vez carregado com Plugins -> Gerenciar e Instalar Plugins -> AttributeTransfer, o plugin est\u00e1 dispon\u00edvel diretamente na barra de ferramentas ou no menu Vetor. Est\u00e1 faltando a l\u00f3gica de neg\u00f3cios, mas n\u00f3s j\u00e1 fizemos isso no post anterior. Tudo o que deve ser fazer \u00e9 unir essas duas partes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Depois de mexer no console do QGIS Python e implementar a an\u00e1lise de vizinho mais pr\u00f3ximo, vamos criar uma GUI muito simples para o plug-in. Embora os documentos da API do QGIS levassem algumas horas para serem entendidos, o ecossistema&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2018\/12\/05\/desenvolvimento-de-plugins-do-qgis-criando-interface-grafica-parte-4\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":7785,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[79,260],"class_list":["post-7783","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gis","tag-python","tag-qgis"],"_links":{"self":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/7783","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/users\/275"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/comments?post=7783"}],"version-history":[{"count":6,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/7783\/revisions"}],"predecessor-version":[{"id":7823,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/7783\/revisions\/7823"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media\/7785"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=7783"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=7783"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=7783"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}