Bonjour à tous

J'ai un problème avec QTreeWidget.removeItemWidget qui s'est déclaré avec PyQt v4.8.4 et qui perdure avec PyQt v4.8.5. Jusqu'à présent le removeItemWidget fonctionnait nickel et depuis 4.8.4 il ne fonctionne plus

J'ai écrit un petit code test tout simple: un QTreeWidget avec un bouton "+" pour ajouter des item et un bouton "-" pour supprimer le dernier item

Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
 
class QtAppli(QApplication):
	"Fenêtre de l'application"
 
	# Constructeur fenêtre
	def __init__(self,
			argv):
 
		# Message de contrôle
		print "QtAppli (qt v%s, pyqt_v%s)" % (QT_VERSION_STR, PYQT_VERSION_STR)
 
		# Appel constructeur de l'objet hértié
		QApplication.__init__(self, argv)
 
		# Attributs de l'application
		self.argv=argv
 
		# Widget principale
		self.__mainWid=QMainWindow()
		self.__mainWid.setCentralWidget(QWidget(self.__mainWid))
		self.__mainWid.statusBar()
 
		# Titre
		self.__mainWid.setWindowTitle("Test qtreewidget")
 
		# Version
		self.__mainWid.statusBar().showMessage(
			"Qt v%s, PyQt v%s" % (
				QT_VERSION_STR,
				PYQT_VERSION_STR,
			)
		)
 
		# Un espace de rangement général
		mainLayout=QHBoxLayout(self.__mainWid.centralWidget())
 
		# La zone d'items et son scroll
		self.__tabItem=[]
		self.__treeItem=QTreeWidget()
 
		# La zone des boutons
		layoutBtn=QVBoxLayout()
 
		# Les boutons + et -
		self.__add=QPushButton("+")
		self.connect(self.__add, SIGNAL("clicked()"), self.__addItem)
		self.__sub=QPushButton("-")
		self.__sub.setEnabled(False)
		self.connect(self.__sub, SIGNAL("clicked()"), self.__subItem)
		for i in range(10): self.__addItem()
 
		# Pour quitter
		quit=QPushButton()
		quit.setText("Quitter")
		self.connect(quit, SIGNAL("clicked()"), self.__mainWid, SLOT("close()"))
 
		# Rangement des boutons
		layoutBtn.addWidget(self.__add)
		layoutBtn.addWidget(self.__sub)
		layoutBtn.addWidget(quit)
 
		# Rangement général
		mainLayout.addWidget(self.__treeItem)
		mainLayout.addLayout(layoutBtn)
	# __init__()
 
	# Ajout d'élément
	def __addItem(self):
		print "add %d" % len(self.__tabItem)
		self.__tabItem.append(QTreeWidgetItem(QStringList(QString("Hello %d" % len(self.__tabItem)))))
		self.__treeItem.addTopLevelItem(self.__tabItem[-1])
		self.__sub.setEnabled(True)
	# __addItem
 
	# Suppression d'élément
	def __subItem(self):
		print "sub %d" % len(self.__tabItem)
		self.__treeItem.removeItemWidget(self.__tabItem[-1], 0)
		del self.__tabItem[-1]
		if len(self.__tabItem) == 0: self.__sub.setDisabled(True)
	# __subItem
 
	# Affichage et lancement application
	def run(self):
		self.__mainWid.show()
		self.exec_()
	# run()
# class QtAppli
 
Appli=QtAppli(sys.argv)
Appli.run()

Ce code fonctionne à la perfection avec PyQt jusqu'à 4.8.3 mais ne fonctionne plus avec 4.8.4 et 4.8.5 (le dernier à ce jour). J'arrive bien à ajouter des item mais la méthode remove ne fonctionne plus.

Donc j'aimerais bien avoir les avis des connaisseurs savoir si qqun a rencontré le même souci, ou alors si la façon de faire a changé...

Merci à tous.