2010-07-07 28 views
14

Je souhaite créer une boîte de dialogue QT4 (utilisant le concepteur QT), qui contient une partie dans laquelle un fichier doit être sélectionné. Maintenant, je sais que QFileDialog existe, et je peux programmer quelque chose qui fait ce que je veux. Mais puis-je aussi le faire dans QT designer?PyQt4 Widget de sélection de fichier

Existe-t-il un moyen d'obtenir un widget de "sélection de fichier" dans le concepteur QT? Ou, je me souviens de ces boutons, ayant le fichier sélectionné comme un titre et une petite flèche permettant à l'utilisateur de sélectionner un autre fichier par le QFileDialog?

Alors, existe-t-il une solution prête à l'emploi ou dois-je la programmer moi-même?

Répondre

24

Il n'y a pas de boîte de dialogue de fichier disponible à partir du concepteur Qt autant que je sache. Mais vous pouvez facilement le faire avec quelques lignes de code.

En supposant que vous avez un bouton simple appelé pushButton et le chemin doit être stocké dans lineEdit.

def selectFile(): 
    lineEdit.setText(QFileDialog.getOpenFileName()) 

pushButton.clicked.connect(selectFile) 

[edit] Je me demande simplement si vous utilisez KDE par hasard? Si c'est le cas, vous pouvez utiliser KUrlRequester pour cela. Il peut facilement être configuré pour supporter n'importe quoi, des fichiers aux urls en passant par les répertoires.

+0

hey je dois faire même chose mais je reçois erreur 'NameError: nom global « QFileDialog » est pas defined' – lkkkk

+1

@Latik: vous devez importer bien sûr,' de PyQt4.QtGui importation QFileDialog ' – Wolph

+0

oui, cela fonctionne merci beaucoup !! – lkkkk

11

QFileDialog existe dans QtGui. Au moins dans ma version 4.4 et probablement beaucoup plus tôt aussi. Je pense que la raison pour laquelle ce n'est pas dans Designer est qu'il ouvre sa propre fenêtre au lieu d'être un widget à placer sur une autre fenêtre.

La documentation de QTDesigner pourrait être meilleure et au moins un indice de son existence. Installez-le et exécutez la commande show.

Il vient droit et par défaut à /.

import QtGui 
self.fileDialog = QtGui.QFileDialog(self) 
self.fileDialog.show()