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 :

Qwebview, CTRL+Clic = ouveture du lien dans un nouvel onglet


Sujet :

Qt

  1. #1
    Membre du Club Avatar de Valter
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2008
    Messages : 113
    Points : 67
    Points
    67
    Par défaut Qwebview, CTRL+Clic = ouveture du lien dans un nouvel onglet
    Bonjour,

    j'ai une fonction pour ouvrir un onglet (à laquelle j'ai associé le raccourci CTRL+N).
    J'aimerais également savoir comment faire pour que lorsqu'un utilisateur effectue un clic avec la touche CTRL appuyée, le lien ne s'ouvre pas dans l'onglet actuel mais dans un nouvel onglet.
    Merci beaucoup,

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    utilises la classe QKeyEvent() pour mettre un booléen à true lors du pressEvent() sur le bouton Ctrl, et qui passe à false lors du releaseEvent().

    Ensuite dans QMouseEvent() si lors du clic gauche ton booléen (du dessus) est à true tu ouvres la page dans le nouvel onglet

  3. #3
    Membre du Club Avatar de Valter
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2008
    Messages : 113
    Points : 67
    Points
    67
    Par défaut
    D'accord, merci de ta réponse.
    Mais comment faire comprendre qu'il faut avoir la touche CTRL appuyée et le clic gauche ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    relis bien mon précédent message, l'appuie des 2 touches est bien géré

  5. #5
    Membre du Club Avatar de Valter
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2008
    Messages : 113
    Points : 67
    Points
    67
    Par défaut
    Donc c'est bien ce que j'ai fait.
    Cependant, je me demandais s'il n'y avait pas de méthode plus rapide ou plus performante...
    Parce que là, vu à quoi ressemble mon code je m'interroge sur les performances de celui-ci.

    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
    connect(view()->page(), SIGNAL(linkClicked(QUrl)), this, SLOT(linkClick(QUrl)));
     
    [...]
     
    void MainWindow::linkClick(QUrl url) {
        if (cPress == true)
            addr->setText(url.toString());
    }
    void MainWindow::keyPressEvent(QKeyEvent *event) {
        if (event->key() == Qt::Key_Control) {
            cPress = true;
            event->accept();
        }
        else
            event->ignore();
    }

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    pour ma part je ne vois pas comment simplifier davantage, on ne fait rien d'autre que de vérifier la réalisation simultanée des 2 évènements!

    par contre où est ton QMouseEvent() ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 38
    Points : 45
    Points
    45
    Par défaut
    Salut,

    Il y a moyen de faire quelque choses sans le keyPressEvent mais en utilisant mousePressEvent ou mouseReleaseEvent, dans le code ajouter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (event->modifiers() == Qt::ControlModifier)
    	{
    	// Ctrl seulement est appuyé
    	}
    Tu peux aussi l'utiliser par exemple pour Ctrl + Shift en même temps:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (event->modifiers() == (Qt::ControlModifier | Qt::ShiftModifier))
    	{
    	// Ctrl + Shift sont appuyés
    	}
    G.

  8. #8
    Membre du Club Avatar de Valter
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2008
    Messages : 113
    Points : 67
    Points
    67
    Par défaut
    Merci.

    Mais inclure cette fonction dans le slot click() ?

    Ou alors est-ce que je dois créer deux slots ? Un qui récupère l'event lors d'un clic sur un lien, et juste après un qui gère ce clic ?

    Merci.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 38
    Points : 45
    Points
    45
    Par défaut
    Salut,

    Désolé je ne connais pas trop les QWebView, je ne sais pas s'il y a moyen de combiner les mouseXXXEvent avec le linkClick.

    Sinon une chose qui peut peut-être marcher est d'utiliser le keyboardModifiers de la classe QApplication. Réimplementer ton linkClicked comme ceci:

    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
    void MainWindow::linkClick(QUrl url)
    {
        // qApp est un pointeur global correspondant à l'objet application unique.
        if (qApp->modifiers() == Qt::NoModifier)
        {
    	// Aucun modifier appuyé
        }
        else if (qApp->modifiers() == Qt::ControlModifier)
        {
    	// Ctrl seulement est appuyé
        }
        else
        {
    	// N'importe quelle autre combinaison de touches
        }
    }
    En espérant avoir aidé.
    G.

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/07/2013, 16h19
  2. Jquery lien dans un nouvel onglet
    Par fazpedro dans le forum jQuery
    Réponses: 6
    Dernier message: 04/10/2011, 21h27
  3. fair s'ouvrir un lien dans un nouvel onglet (a defaut une nouvelle page)
    Par logan138 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 17/09/2010, 12h05
  4. ouvrir un lien dans un nouvel onglet
    Par rvm31 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 18/02/2008, 19h00
  5. Forcer l'ouverture d'un lien dans un nouvel onglet IE
    Par lucie.houel dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 30/11/2007, 08h47

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