IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez C++ Discussion :

[Qt] QLibrary, QDesktopServices et affichage d'images [FAQ]


Sujet :

Contribuez C++

  1. #1
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut [Qt] QLibrary, QDesktopServices et affichage d'images
    Salut,

    C'est parti, je me jette à l'eau

    2.1 QtCore
    2.1.3 QLibrary
    Q: Qu'est-ce?
    R: QLibrary permet de charger de façon multi-plateforme une bibliothèque dynamique, ainsi que d'en récupérer des pointeurs vers les fonctions exportées.

    Q: Comment s'en servir?
    R: Après avoir créé un objet de ce type, il faut spécifier le nom de la bibliothèque dynamique à associer *sans préciser l'extension* (ce n'est plus multi-plateforme sinon ). Il suffit ensuite d'appeler resolve() en fournissant le nom du symbole à trouver. Il est retourné en tant que void*, donc un cast sera bien évidemment nécessaire. Sont aussi fournies des fonctions statiques évitant l'instanciation dans le cas où on ne voudrait récupérer qu'un symbole.
    Par exemple, admettons qu'une fonction d'une bibliothéque permette de compter le nombre de lettre dans un mot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef int (*StringLength)(char*); // définition du type de fonction
    QLibrary lib("string_util"); // création d'un objet QLibrary lié à string_util (.dll, .so ou autre)
    StringLength strLength = (StringLength)lib.resolve("strlen"); // récupération d'un pointeur sur notre fonction partagée
    if(strLength)
        strLength("QLibrary"); // devrait renvoyer 9... si tout va bien ;)
    2.2 QtGui
    Q: Comment afficher une image dans mon interface?
    R: La méthode la plus simple est d'utiliser un QLabel conjointement à un QPixmap.
    Voici 2 exemples:
    > L'image à afficher est externe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QLabel *lbl = new QLabel(parent);
    lbl->setPixmap(QPixmap("media/image.png")); // où media serait un sous répertoire du répertoire d'exécution
    > L'image est une ressource:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lbl->setPixmap(QPixmap(":/image.png"));
    2.2.1 QDesktopServices
    Q: Comment ouvrir un document (ou autre) avec l'application associée par défaut?
    R: La classe QDesktopServices est là pour répondre à ce besoin. Elle peut etre étendue si nécessaire pour ajouter ses propres handlers pour un schéma donné.
    Voici quelques exemples d'utilisation de cette classe:
    > Ouvrir un document .cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QDesktopServices::openUrl(QUrl::fromLocalFile("/path/to/fichier.cpp"));
    > Créer un mail dans le client mail par défaut (l'envoi reste manuel):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QDesktopServices::openUrl(QString("mailto:destinataire@domaine.extension?subject=sujet"));

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Merci, je note

    Pour l'exemple 1, je l'étofferai un peu avant de le publier

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par IrmatDen Voir le message
    2.2 QtGui
    Q: Comment afficher une image dans mon interface?
    R: La méthode la plus simple est d'utiliser un QLabel conjointement à un QPixmap.
    Voici 2 exemples:
    > L'image à afficher est externe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QLabel *lbl = new QLabel(parent);
    lbl->setPixmap(QPixmap("media/image.png")); // où media serait un sous répertoire du répertoire d'exécution
    > L'image est une ressource:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lbl->setPixmap(QPixmap(":/image.png"));
    Bonjour,
    j'aurai renommer la question par "Comment ajouter des images dans mon interface?"
    Car c'est certes une méthode simple, mais elle n'est pas adapter pour faire l'affichage d'image (plus grande que la widget) et faire des zooms.
    Pour cela il faut mieux utiliser un QPainter

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par austin.fla Voir le message
    Salut à tous,

    je voudrais savoir comment je pourrais faire pour :

    J'ai fait un QLabel dedans j'ai mis une image avec QPixmap ça marche nikel maintenant j'aimerai ajouter une action si on clique dessus par exemple :

    J'ai un QLabel avec une image dessus cette image c'est une maison, donc j'aimerai faire en sorte que si je clique sur cette image hop j'ai un lien direct vers mon site, avec QDesktopServices::openUrl(QString("http://www.____.fr/"));

    Je sais pas vraiment comment faire... Et je voudrais aussi si possible ajouter une info bulle lors du passage de la souris sur une icone dans une QLabel.

    Merci !
    Salut.
    Peut etre qu'un QPushButton est plus adapté

Discussions similaires

  1. [FLASH MX] Affichage d'images par loadMovie
    Par n_tony dans le forum Flash
    Réponses: 7
    Dernier message: 23/09/2004, 15h34
  2. XSL: pb d'affichage d'images
    Par enez dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 12/09/2004, 14h17
  3. PB affichage d'image avec IE
    Par arturo dans le forum Modules
    Réponses: 6
    Dernier message: 25/09/2003, 17h28
  4. [VB6] Affichage d'image avec qlq contraintes
    Par youri dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo