Problème PyQt avec un QVariant - Python 2.5, Qt 4.4.1, PyQt 4.4.3

Problème PyQt avec un QVariant - Python 2.5, Qt 4.4.1, PyQt 4.4.3 - Python - Programmation

Marsh Posté le 20-02-2010 à 10:41:05    

Bonjour
 
J'ai découvert récemment le QVariant et sa possibilité d'être transporté dans des items de QComboBox ou autres ce qui est bien pratique quand on veut créer une widget qui embarque avec elle des datas de travail qui n'ont pas besoin d'apparaitre à l'écran.
 
J'ai donc développé un truc sur Linux où j'ai eu besoin de cet outil, et au final, ça a marché. Tout allait bien jusqu'au moment où j'ai voulu le porter sous Windows où là, j'ai eu une surprise avec mon QVariant qui était vide.
 
J'ai réussi à créer un exemple minimal de fonctionnel de démonstration du pb
 

Code :
  1. #!/usr/bin/env python
  2. # coding: UTF-8 -*-
  3.  
  4. # Modules Python
  5. from PyQt4.QtCore import *
  6.  
  7. print "\nEssai1"
  8. a=QVariant((1, 2, 3))
  9. liste=a.toList()
  10. print "a=", a
  11. print "liste=", liste
  12. print "content", [x.toInt() for x in liste]
  13.  
  14. print "\nEssai2"
  15. a=QVariant(QStringList(("1", "2", "3" )))
  16. liste=a.toList()
  17. print "a=", a
  18. print "liste=", liste
  19. print "content", [x.toInt() for x in liste]


 
Donc l'essai 1 est celui qui ne fonctionne pas. Dans cet essai je crée un QVariant qui va embarquer avec lui une liste de 3 nombres. Ensuite je récupère et affiche le contenu donc les 3 nombres.
Ce qui est le plus problématique, c'est que cet exemple fonctionne parfaitement sous Linux. J'obtiens bien mes 3 nombres. Mais sous Windows, j'obtiens une liste vide  :??:  
 
L'essai 2 est la solution que j'ai trouvé qui me permet de contourner le problème. Au lieu de stocker un tableau de 3 nombres, je stocke une QStringList contenant 3 strings. Au retour, j'obtiens bien mes 3 nombres et ça fonctionne aussi bien sous Linux que sous Windows. Mais j'aimerais comprendre pourquoi l'exemple 1 ne fonctionne pas...
 
Personnellement je ne vois que 2 possibilités
1) l'essai 1 est mal conçu mais par chance le défaut de conception reste transparent sous Linux
2) il y a un problème de portabilité Qt/PyQt/Sip sous Windows (je travaille avec Python 2.5, Qt 4.4.1 et PyQt 4.4.3)
 
Si quelqu'un a une autre explication...
 
Merci


Message édité par Sve@r le 20-02-2010 à 15:42:27

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 20-02-2010 à 10:41:05   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed