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 :

QTest et QComboBox -> qt_scrollarea_viewport


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Par défaut QTest et QComboBox -> qt_scrollarea_viewport
    Bonjour, actuellement je dois réaliser un projet qui consiste à effectuer des tests sur l'ui de notre logiciel. Pour le moment je réalise un prototype qui fonctionnait plutôt pas mal mais j'arrive à un problème.

    J'ai une classe d'espion qui me permet de récupérer le nom du QWidget, le type de clique et sa position afin de m'en servir pour les évents souris QTests.
    Et donc quand je clique sur une liste déroulante j'ai bien l'objectName de ma combobox mais quand je clique sur un élément de cette liste, comme objectName j'ai "qt_scrollarea_viewport" et donc je n'arrive pas à accéder à cette élément avec QTest.

    J'ai essayé de faire aussi mousePress( _parent ->findChild<QScrollArea *>(QString("qt_scrollarea_viewport")), Qt::LeftButton, 0, QPoint(x, y), delay);
    mais le findChild me retourne null.

    C'est le même soucis avec qt_tabwidget_tabbar

    J'ai pas réussi à trouver une solution dans la doc Qt et g00gle
    Merci d'avance au futur réponse

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    qt_scrollarea_viewport, comme le nom l'indique, n'est pas un QScrollArea (ni un QAbstractScrollArea), mais un "viewport", donc un QWidget. Voir ici pour comprendre ce qu'est le "viewport".

    Sûrement le même problème pour qt_tabwidget_tabbar

  3. #3
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Par défaut
    Oui, en effet je suis d'accord mais mon soucis n'est pas là ... car même si je fais
    mousePress( _parent ->findChild<QWidget *>(QString("qt_scrollarea_viewport")), Qt::LeftButton, 0, QPoint(x, y), delay);
    cela ne marche pas, ce qui est normal...

    J'ai aussi essayé de faire le press sur la combo et modifier à la main la position du 'y' afin qu'il press un élément de la liste de la combo mais en vain aussi.

    J'aimerais savoir si il y as un moyen de sélectionner les éléments de ma combobox avec Qtest. Concrétement j'aimerais pouvoir faire un truc du genre:

    //clique sur la combo pour ouvrir la liste. (possible)
    mouseClick( _parent ->findChild<QWidget *>(QString("QComboBox_blabla")).....);

    //clique sur le premier élément de la combo. (pas possible)
    mouseClick( _parent ->findChild<QWidget *>(QString("QComboBox_blabla_elmt1")).....);

    //clique sur la combo pour ouvrir la liste.
    mouseClick( _parent ->findChild<QWidget *>(QString("QComboBox_blabla")).....);

    //clique sur le deuxième élément de la combo.
    mouseClick( _parent ->findChild<QWidget *>(QString("QComboBox_blabla_elmt2")).....);

    .....

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    En effet j'ai répondu à côté de ta question principale

    Une QAbstractItemView (la liste de la combobox en est une) a une méthode indexAt() pour déterminer quel élément est à telle position. Ces éléments ne sont pas des widgets donc c'est pourquoi tu ne peux pas les trouver de cette façon. Lorsqu'il y a un clic en X;Y (coordonnées par rapport au viewport), il se passe quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    comboBox->setCurrentIndex(comboBox->view()->indexAt(QPoint(X,Y)).row());
    Pour faire ça en cliquant ce serait donc le viewport qu'il faut viser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mouseClick( comboBox->view()->viewport(),....);
    plus joli que les findChild dont on est pas censé connaitre les noms.

  5. #5
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Par défaut
    Ça marche ! merci à toi

    P.S : findChild m'est nécessaire

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

Discussions similaires

  1. lire une valeur "entier" à partir d'un QComboBox
    Par alexendre dans le forum Qt
    Réponses: 2
    Dernier message: 20/05/2009, 12h43
  2. [QComboBox] SetCurrentText() donne une attributerror
    Par mathieu_r dans le forum PyQt
    Réponses: 1
    Dernier message: 27/03/2009, 10h58
  3. Remplissage de QComboBox depuis une requête SQL
    Par L0101SA dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/03/2008, 20h42
  4. QComboBox, ajouter des items
    Par insomniak dans le forum Qt
    Réponses: 3
    Dernier message: 06/09/2006, 13h48
  5. [PyQt] QComboBox
    Par taurus-le-bien-aime dans le forum PyQt
    Réponses: 5
    Dernier message: 12/01/2006, 22h58

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