Comment “afficher dans le Finder” ou “Afficher dans l'Explorateur”, avec Qt
Est-il possible d'ouvrir un dossier dans l'Explorateur Windows/OS X Finder, puis sélectionner/mettre en surbrillance un fichier dans ce dossier, et de le faire en une plate-forme de chemin? Maintenant, je fais quelque chose comme
QDesktopServices::openUrl( QUrl::fromLocalFile( path ) );
où path
est un chemin d'accès complet vers le dossier que je veux ouvrir. Évidemment, ce sera juste ouvrir le dossier, et je vais le traquer le fichier que j'ai besoin manuellement. C'est un peu le problème quand il y a des milliers de fichiers dans ce dossier.
Si je le fais, un chemin de fichier spécifique dans ce dossier, alors que le fichier est ouvert avec l'application par défaut pour ce type mime, et ce n'est pas ce dont j'ai besoin. Au lieu de cela, j'ai besoin de la fonctionnalité équivalente à "afficher dans le Finder" ou "Afficher dans l'Explorateur".
- Pour clarifier les choses: tu veux dire comme quand vous cliquez sur "afficher dans le Finder" ou "Afficher dans l'Explorateur" dans le menu?
- Oui, ce que je voulais dire, c'est exactement quelque chose comme "afficher dans le Finder" ou "Afficher dans l'Explorateur"
- j'ai pris en compte cette fonctionnalité à partir de Qt Creator pour mettre en œuvre de simples outils pour automatiser la création de captures d'écran pour DONC un exemple de code 🙂.
Vous devez vous connecter pour publier un commentaire.
Qt Creator (source) dispose de cette fonctionnalité, il est trivial de le copier:
Un autre, lié billet de blog (avec un simple code, je n'ai pas essayé donc je ne peux pas commenter), est cette.
Edit:
Il y a un bug dans le code d'origine lorsque pathIn contient des espaces sur Windows. QProcess::startDetached automatiquement citer un paramètre s'il contient des espaces. Cependant, l'Explorateur Windows ne reconnaît pas un paramètre enveloppé dans les citations, et permettra d'ouvrir l'emplacement par défaut à la place. Essayez vous-même dans la ligne de commande Windows:
Ainsi,
est changé à
Environment
classe?Environment
github.com/qt-creator/qt-creator/blob/master/src/libs/utils/.../select,
(avec une virgule) pas/select
. Qt correctement wrap le chemin d'accès entre guillemets, comme nécessaire. Source: geoffchappell.com/studies/windows/shell/explorer/cmdline.htmProbablement, vous pouvez utiliser
QFileDialog::getOpenFileName
pour obtenir le nom de fichier. La documentation est disponible ici.. La fonction ci-dessus sera retour le chemin d'accès complet, y compris le nom de fichier et son extension si tout..Alors vous pouvez donner
QDesktopServices::openUrl(path);
pour ouvrir le fichier par défaut d'application, où l'
path
sera leQString
retourné parQFileDialog::getOpenFileName
.Espère que cela aide..
QUrl::fromLocalFile()
; vous pouvez avoir à utiliser avecQFile#absoluteFilePath()
, etc. si vous travaillez avec des chemins relatifs. cc @StradivariusOuvrir le fichier dans l'explorateur windows (pas de navigateur)
Voici le code que je suis allé en s'appuyant sur les entrées à partir d'une réponse précédente. Cette version ne dépend pas d'autres méthodes dans Qt Creator, accepte un fichier ou un répertoire, et a une chute de retour en mode de gestion d'erreur et d'autres plates-formes:
path
doit être absolue. On peut supprimer les messages de sortie deosascript
en ajoutant simplement unreturn
instruction.open dirPath
serait encore plus simple sur mac os, mais il ne met pas en surbrillance le fichier sipath
était en fait un fichier.Cette solution fonctionne sur Windows et Mac: