Comment aborder le nouveau QgsMessageBar «terminé dans la tâche» en Python?

12

Je suis vraiment étonné des énormes mesures prises par le développement de QGIS au cours des derniers mois. Le nouvel ensemble d'icônes, le compositeur d'impression amélioré et bien d'autres changements à voir dans QGIS 2.0 sont vraiment géniaux!

Parmi de nombreuses autres améliorations intéressantes, il y a aussi cette barre de tâches bleue astucieuse, que je trouve très attrayante. Le texte dit: Enregistrement terminé: exportation vers un fichier vectoriel terminée

Est-il possible d'adresser cette barre en python pour les scripts et les plugins (par exemple pour afficher un petit message après les calculs terminés)? Je pose cette question ici, car je pense que de nombreux développeurs QGIS visitent également ce site de questions / réponses.

PS: la barre n'est visible que dans QGIS dev et uniquement pour certaines opérations.

Courlis
la source

Réponses:

14

Tout à fait:

iface.messageBar().pushMessage("Header","MessageBody", QgsMessageBar.WARNING, 2)

le dernier argument est un délai d'attente en secondes, s'il n'est pas fourni, il restera jusqu'à ce que l'utilisateur le ferme.

Vous pouvez même ajouter votre propre contrôle à la barre des messages:

widget = iface.messageBar().createMessage("Test","Testing")
combo = QComboBox()
widget.layout().addWidget(combo)
iface.messageBar().pushWidget(widget, QgsMessageBar.WARNING)
combo.addItems("ASD")

entrez la description de l'image ici

http://www.qgis.org/api/classQgsMessageBar.html#a0b305c7215d75243b4237c299f0f7723

Nathan W
la source
@Nathan j'utilise QProgressBar au lieu de QComboBox. je ne suis pas en mesure d'aligner l'étiquette de la barre de progression sur le côté droit, actuellement son affichage au milieu de la barre de progression avec le symbole%.
venkat
@venkat, c'est le style de la barre de progression. Jetez un œil aux feuilles de style Qt sur la façon de changer cela, ou il pourrait y avoir une propriété d'étiquette.
Nathan W
@Nathan j'ai déjà posé la question à ce sujet mais je n'ai pas obtenu de réponse jusqu'à présent. veuillez vérifier ce lien. là je l'ai expliqué avec capture d'écran et code source. stackoverflow.com/questions/16434215/…
venkat
@venkat a répondu là-bas pour vous
Nathan W