Bonjour à tous
J'ai mon programme codé avec Qt. J'aimerais savoir comment faire pour que d'autres logiciels puissent s'ouvrir depuis mon programme.
Par exemple, j'aimerais que lorsque l'utilisateur clique sur Aide, le programme de lecture des PDF s’ouvre en lisant le fichier d'aide. Ou, lorsque l'utilisateur clique sur "Contacter l'auteur", la messagerie s'ouvre avec mon adresse.
En fait, j'aimerais ouvrir le programme par défaut, pas un spécifique, pour que ça marche chez tout le monde mais je sèche complètement pour faire ça .
Merci d'avance !
Ca ne marche pas non plus, on voit le html comme du texte dans le menu
Pour les QProcess, il faut indiquer le chemin du programme mais moi je voudrais que ce soit le programme par défaut qui s'ouvre (pour que ça marche chez tout le monde), tu sais comment faire ça ?
Mais en faite c'est où que tu veux le metre?
Car si c'est dans une fenêtre comme c'est dans la plus part des cas ça fonctionne sauf si tu as mis \n donc ça tu le remplace par <br>
En revanche si tu essaye de mettre sa dans un menu déjà c'est pas top et puis la je pense qu'il te faudra faire un slot perso pour que ça fonctionne.
Bref moi ce que je te conseil c'est de faire une QDialog et de mettre tout ça.
tu as essayé avec addHtml(ton code html) ou insertHtml?
sinon pour ouvrir le programme par defaut, il suffit d'ouvrir le fichier, ca devrait lancer le programme associé par defant, non?
je crois qu'on trouve ca de ce coté ci:
Mais en faite c'est où que tu veux le metre?
Car si c'est dans une fenêtre comme c'est dans la plus part des cas ça fonctionne sauf si tu as mis \n donc ça tu le remplace par <br>
En revanche si tu essaye de mettre sa dans un menu déjà c'est pas top et puis la je pense qu'il te faudra faire un slot perso pour que ça fonctionne.
Bref moi ce que je te conseil c'est de faire une QDialog et de mettre tout ça.
En fait, j'ai un menu "?". Dedans, j'ai le QAction "Contacter l'auteur". Je voudrais que, quand l'utilisateur clique dessus, la messagerie par défaut s'ouvre avec mon adresse. Dans ce même menu, j'ai aussi un QAction "Aide". Je voudrais que lorsque l'utilisateur clique dessus, le programme de lecture des pdf par défaut s'ouvre en lisant le fichier d'aide que j'aurais préparé.
(Si c'est pas clair, il faut me le dire )
Citation : sfmaniaque
tu as essayé avec addHtml(ton code html) ou insertHtml?
sinon pour ouvrir le programme par defaut, il suffit d'ouvrir le fichier, ca devrait lancer le programme associé par defant, non?
je crois qu'on trouve ca de ce coté ci:
QFileDialog::getOpenFileNames
Je vais essayer pour le addHtml. Par contre pour la suite, je pense pas. C'est marqué dans le cour que QFileDialog::getOpenFileNames ne sert qu'à donner le chemin du fichier à ouvrir. En plus, je ne veux pas que l'utilisateur choisisse le fichier (ce à quoi sert getOpenFileNames), mais je veux ouvrir mon fichier d'aide.
Moi je te conseil de faire dans ton menu "?" un "A propos" et qui ouvre une QDialog ou QMessageBox::about();
Et ici tu y place ton adresse en html.
La plus part des logiciels fond comme ça.
Disons que c'est une solution mais c'est pas tellement ce que je veux faire. Je vais mettre ça en attendant.
Pour les logiciels par défaut quelqu'un a une idée ?
Est-ce qu'il y a une commande pour system qui permet d'ouvrir le programme par défaut pour lire les pdf/programme par défaut de messagerie ?
(si tu veux pas tout expliquer donne moi un lien )
Pour ouvrir le programme par défaut chez chacun, si tu programme sous windows(linux j'en ai aucune idée, je suis pas assez experimenté)
1)renseigne toi sur les methode de l,api windows (RegOpenKey et RegQueryValue)
cela servira pour le 2
2)Va voir dans le registre les applications par défaut.Il faudra surment que tu te renseigne un peu, moi je ne peut t'aider que sur des sujet tres élémentaires...
par exemple, HEKY_classes_root contient les applications par defaut pour tous tes fichiers qui en ont un(mp3, cpp, hpp...etc y'en a plein...)
HKEY_CURRENT_USER/Software contient les programmes de l'utilisateur en question...tu peut voir si tel ou tel programme est intallé....
sinon il doit bien exister une clef avec les programmes par defaut, mais je ne la connais pas(il en existe une j,en metterais ma main au feu...)
Pour ouvrir le programme par défaut chez chacun, si tu programme sous windows(linux j'en ai aucune idée, je suis pas assez experimenté)
1)renseigne toi sur les methode de l,api windows (RegOpenKey et RegQueryValue)
cela servira pour le 2
2)Va voir dans le registre les applications par défaut.Il faudra surment que tu te renseigne un peu, moi je ne peut t'aider que sur des sujet tres élémentaires...
par exemple, HEKY_classes_root contient les applications par defaut pour tous tes fichiers qui en ont un(mp3, cpp, hpp...etc y'en a plein...)
HKEY_CURRENT_USER/Software contient les programmes de l'utilisateur en question...tu peut voir si tel ou tel programme est intallé....
sinon il doit bien exister une clef avec les programmes par defaut, mais je ne la connais pas(il en existe une j,en metterais ma main au feu...)
Sous windows, ça se fait en une seule api (SE, la plus connue)
On ne lit pas la registry, puisque le Shell le fait automatiquement par les ProgId
Et surtout pas system(), évidemment, surtout en GUI subsystem..
Tout est expliqué en long large et travers dans MSDN...
Salut à tous
Je viens de trouver dans la doc de Qt une fonction qui permet d'ouvrir des fichiers, des URLs, bref, tout ce que je cherchais : c'est ici
Voilà, bonne continuation.
Pour ceux qui se demandent : si vous utilisez Qt, abandonnez totalement l'idée de faire des appels à "system()", cette fonction est bloquante, et donc bloquera votre programme tant que le programme appelé n'aura pas terminé son exécution. Il suffit alors d'un simple bug du programme appelé pour que votre interface entière soit figée...et de plus, si c'est pour afficher un pdf d'aide, on aime bien ne pas avoir à fermer l'aide pour continuer à utiliser le programme...
Qt implémente des QProcess, c'est la meilleure chose qui nous soit arrivée, cela fait la même chose qu'un system(), mais dans dans un processus différent, donc votre programme peut continuer à tourner, et de plus vous pouvez communiquer avec lui, donc par exemple, si vous lancez un programme console qui écrit des trucs dans la sortie standard (via des "cout <<" par exemple), et bien vous pouvez TRÈS simplement lire la sortie standard pour afficher tout ce qu'elle contient dans un QTextEdit par exemple. Inutile de préciser que vous pouvez de meme envoyer des données sur l'entrée standard (équivalent de "cin >>") de votre programme, bref, la communication est posssible.
C'est aussi pourquoi il est vivement conseillé de n'utiliser Qt que pour faire une interface, le programme "utile" étant un truc en console, ce qui est bien plus simple à débugguer : si le programme console marche, alors 99% du travail est fait
Comment faire pour que d'autres logiciels s'ouvrent depuis mon programme ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
* Un wrapper C++ pour sqlite * Une alternative a boost units
fonctionne très bien. Ca prend une ligne, ca bidouille pas le registre et c'est facile.
* Un wrapper C++ pour sqlite * Une alternative a boost units