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

Qt Discussion :

QLabel et HTML


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 198
    Par défaut QLabel et HTML
    J'ai un QLabel dans lequel j'affiche du texte formaté en html. J'utilise des balises "href" et elles s'affichent bien comme des liens hypertexte. Mais quand je clique dessus il ne se produit rien. Dois-je modifier une propriété du QLabel ou utiliser un autre widget ?

  2. #2
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Cette propriété devrait faire ce que tu veux :
    http://qt.developpez.com/doc/latest/...rnallinks-prop

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 198
    Par défaut
    Merci, ça marche.
    Par contre pour le premier clic ça dure 10 secondes et gèle l'application avant que Firefox (déjà ouvert) n'ouvre le lien.

  4. #4
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Vu que QLabel se contente d'appeler openUrl, je pense que le temps d'attente se situe plutôt au niveau de l'OS qu'au niveau de ton appli. Mais je suis pas sûr. En tout cas je ne connais rien dans Qt qui permette de toucher à cette partie, c'est une boite noire...

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Citation Envoyé par DSGSLA Voir le message
    Merci, ça marche.
    Par contre pour le premier clic ça dure 10 secondes et gèle l'application avant que Firefox (déjà ouvert) n'ouvre le lien.
    J'ai aussi rencontré des problèmes de ce niveau là dans une application que je développais. Je n'ai pas trouvé de solution malheureusement.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Peut être en utilisant QtConcurrent::run et QDesktopServices::setUrlHandler pour lancer QDesktopServices::openUrl dans un thread indépendant ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    class OpenUrlHandler : public QObject
    {
    Q_OBJECT
     
    public slots:
        void openUrl(const QUrl &url)
        {
            QDesktopServices::unsetUrlHandler("http");
            QtConcurrent::run(QDesktopServices::openUrl, url);
        }
    };
     
    MyLabel::MyLabel(QWidget* parent)
        : QLabel(parent)
    {
        setOpenExternalLinks(true);
        OpenUrlHandler* handler = new OpenUrlHandler();
        QDesktopServices::setUrlHandler("http", handler, "openUrl");
    }
    Ça fonctionne chez moi mais comme l'ouverture de chrome est trop rapide, je n'ai pas le temps de voir si ce code est débloquant

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    Peut être en utilisant QtConcurrent::run et QDesktopServices::setUrlHandler pour lancer QDesktopServices::openUrl dans un thread indépendant ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    class OpenUrlHandler : public QObject
    {
    Q_OBJECT
     
    public slots:
        void openUrl(const QUrl &url)
        {
            QDesktopServices::unsetUrlHandler("http");
            QtConcurrent::run(QDesktopServices::openUrl, url);
        }
    };
     
    MyLabel::MyLabel(QWidget* parent)
        : QLabel(parent)
    {
        setOpenExternalLinks(true);
        OpenUrlHandler* handler = new OpenUrlHandler();
        QDesktopServices::setUrlHandler("http", handler, "openUrl");
    }
    Ça fonctionne chez moi mais comme l'ouverture de chrome est trop rapide, je n'ai pas le temps de voir si ce code est débloquant
    C'est une bonne idée, pour ne pas bloquer l'application principale
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/09/2002, 12h35
  2. Balises HTML dans un fichier XML
    Par Bastet79 dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 04/09/2002, 15h29
  3. composant builder4 pour afficher du code html
    Par BranRuz dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/09/2002, 11h35
  4. delphi XML / HTML caractéres speciaux !
    Par adem dans le forum EDI
    Réponses: 2
    Dernier message: 29/08/2002, 17h48
  5. [XSLT] inclure du XSL dans une balise html
    Par iaa dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 05/08/2002, 15h57

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