AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 GetOpenFileName Qt

Aller en bas 
AuteurMessage
Termite
Utilisateur confirmé: Rang ****
avatar

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

MessageSujet: GetOpenFileName Qt   Jeu 29 Sep 2011 - 10:25

Bonjour !

Voilà, j'ai besoin de me servir du getopenfilename de windows (pas le filedialog de qt, parce qu'il est extrêmement long à démarrer sur winXP..), mais j'ai un soucis avec :

J'ai fait une classe WindowFileDialog, qui utilise donc un OPENFILENAME pour récupérer les fichiers sélectionnés, celui-ci utilise des WCHAR* pour tout ce qui est texte (les filtres par exemple)

Si j'assigne directement une chaîne de caractère en faisant of.lpstrFilter="All Files\0*.*\0"; ben Qt me renvoit une erreur disant qu'on peut pas convertir un const char en wchar.
Du coups, je me sers d'un QString comme ça :

QString t = "All Files\0*.*\0"
wchar_t filter[t.size()];
t.toWCharArray(filter);

Mais ça marche pas. Primo j'ai deux choix dans mon filedialog, un qui s'appelle bien "All Files", l'autre qui a un nom tout foiré (plein de caractères inexistant, bref un sacré bordel), en plus de ça, le filtre ne marche pas, le file dialog ne m'affiche aucun fichier. Ca me donne la même chose si j'ajoute un vrai filtre, du style "Text File(*.txt)\0*.txt*\0"..

Voilà, si quelqu'un a une solution magique prières pour qu'il m'éclaire bneige

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8995
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: GetOpenFileName Qt   Jeu 29 Sep 2011 - 10:41

Pourquoi ne pas mettre directement wchar_t filter[] = L"All Files\0*.*\0" ?

_________________
                 
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
avatar

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

MessageSujet: Re: GetOpenFileName Qt   Jeu 29 Sep 2011 - 14:40

Aaah, c'est parfait \o/

Mais si je veux convertir un QStringList en wchar_t, je fais comment ?

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8995
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: GetOpenFileName Qt   Jeu 29 Sep 2011 - 16:49

Ah je sais pas trop j'ai jamais essayé.
Peut être en bidouillant
list.join(" ").toStdWString().c_str()
(par contre pas sur du c_str(), c'est peut être autre chose)

_________________
                 
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
avatar

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

MessageSujet: Re: GetOpenFileName Qt   Jeu 29 Sep 2011 - 19:32

Oki, merci ! bneige

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
avatar

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

MessageSujet: Re: GetOpenFileName Qt   Dim 2 Oct 2011 - 12:18

Je profite de ce topic Very Happy

J'ai un soucis avec les grabKeyboard/releaseKeyboard.

Dans mon éditeur d'anim, j'ai un widget qui fait office de menu (timeline,Treeview, etc) et un autre de viewport.
Les actions comme jouer l'animation quand on appuis sur espace se font côté viewport, le soucis c'est qu'il n'attrape pas le clavier..
A la base je l'avais forcé, tout marchait bien, sauf que toutes les autres fenêtre ne reçoivent plus rien du clavier snif
J'ai essayé lors d'un focusInEvent/focusOutEvent de forcer mon viewport à attraper le clavier, mais ça marche pas..

Comment je pourrais régler ça ? Faut absolument jouer avec les grab/release ..?

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8995
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: GetOpenFileName Qt   Dim 2 Oct 2011 - 12:25

Perso je récupérerais les touches pressées en dehors du viewport, et j'emmètrait un signal :p

_________________
                 
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
avatar

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

MessageSujet: Re: GetOpenFileName Qt   Dim 2 Oct 2011 - 12:30

Ouais, c'est ce que je me suis dit..
Ou alors, lors d'un keypressevent, appeller la fonction du viewport en faisant passer le QKeyEvent, jvais voir ça Very Happy

Merci Yum!

edit : Ah ben, marche pas..
J'ai aussi tenté avec un MainWindow + CentralWidget, bah c'est encore pire roll2

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Sekigo Le Magnifique
Utilisateur confirmé: Rang *****
avatar

Messages : 1720

MessageSujet: Re: GetOpenFileName Qt   Sam 19 Nov 2011 - 11:19

Hop, j'ai aussi un souci avec Qt.

Comment peut-on récupérer l'image d'un QPixmap, QImage, etc... ?
En gros, j'importe une grosse image dans un QPixmap, que je découpe ensuite en une multitude de petit QPixmap.
Maintenant, j'aimerais bien pouvoir récupérer l'image contenue dans les petits QPixmap, pour me permettre de les enregistrer dans un fichier.

Il y a bien la fonction QPixmap.save(**kwargs), mais je ne vais pas m'amuser à enregistrer une tonne de petits fichiers, alors que je voudrais qu'un seul. Je pourrais les mettre dans un fichier zip (d'ailleurs, je l'ai déjà fait), mais je prévois d'enregister ces images dans un seul fichier/dans une base de données Sqlite.
Et si je dois traficoter avec les IOfiles, ça va vite me saouler.

D'un coté, c'est logique, Qt doit certainement convertir les images dans un type de données qui lui est propre, pour la rapidité, mais y doit bien y avoir un truc pour chopper la string f64 ou le binaire d'un .png, sans que l'on est besoin de décharger le fichier sur le disque.

Je ne sais pas si j'ai été bien clair...
Revenir en haut Aller en bas
http://s2.noelshack.com/old/up/gmzonecbna-3cfbc56d25.jpg
Sekigo Le Magnifique
Utilisateur confirmé: Rang *****
avatar

Messages : 1720

MessageSujet: Re: GetOpenFileName Qt   Sam 19 Nov 2011 - 14:05

Bon, j'y suis arrivé.
Code:

   def transform_image(self, img=QPixmap()):
      buffers = QtCore.QBuffer()
      img.save(buffers, 'PNG')
      repr_image = str(buffers.data())
      del buffers
      return repr_image

Maintenant, je ne parviens pas à le charger. Ça me gave, mais alors d'une force...

Edit : C'est bon, j'y suis arrivé aussi.
Code:

   def __transform_to_pixmap(self, data=str()):
      bytes = QtCore.QByteArray(data)
      pixmap = QPixmap()
      pixmap.loadFromData(bytes)
      return QGraphicsPixmapItem(pixmap)

Parce que l'on peut enregistrer une image dans le buffer, mais pas y lire (à partir d'un QPixmap). C'est un peu stupide comme manière de faire.
Revenir en haut Aller en bas
http://s2.noelshack.com/old/up/gmzonecbna-3cfbc56d25.jpg
Contenu sponsorisé




MessageSujet: Re: GetOpenFileName Qt   

Revenir en haut Aller en bas
 
GetOpenFileName Qt
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Programmation-
Sauter vers: