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

PyQt Python Discussion :

Ajuster la largeur d'un QScrollArea en fonction du QTabWidget [QtGui]


Sujet :

PyQt Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut Ajuster la largeur d'un QScrollArea en fonction du QTabWidget
    Bonjour à tous,

    J'ai une petite difficulté pour laquelle j'aurai besoin de votre aide

    J'ai crée une classe qui hérite de QtGui.QTabWidget
    Dans cette classe , je souhaite pour mes onglets avoir une zone scrollable en longueur donc j'ai utiliser un QScrollArea

    Problème lorsque j’agrandis manuellement ma fenêtre, la taille de la zone scrollable ne s'agrandit pas automatiquement ... (pas gênant en longueur mais gênant en largeur)
    J'ai cherché dans la doc Qt et sur google sans grand résultat. Si vous pouvez m'aider

    Pour le code, le voici :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class GUI(QtGui.QTabWidget):
        def __init__(self)
            super(GUI,self).__init__()
            self.setMinimumSize(50, 43)
     
            scrollArea = QtGui.QScrollArea()          
     
            attributeWidget = QtGui.QWidget()
            self.attributLayout = QtGui.QVBoxLayout()
            #Boucle pour définir mes labels et lineEdit (qui sont donc dynamique en fonction des propriétés de l'objet qu'on affiche)
            attributeWidget.setLayout( self.attributLayout )             
            scrollArea.setWidget( attributeWidget ) 
            self.addTab(scrollArea, objectName)
    Le savoir est une arme alors soyons armés

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Difficile de comprendre ce que tu veux faire exactement.

    Le QTabWidget est la boîte à onglets dans son entièreté, et, si je te suis bien, tu aimerai une QScrollArea dans chaque onglet, si c'est bien cela, cette QScrollArea devrait se trouver dans un widget et non pas là où tu la mise. Ensuite, tu ajoutes ce widget au QTabWidget avec addTab(monWidget, "Nom")

    Pour l'alignement, il faut placer un layout dans le widget onglet ayant l'onglet pour parent et la QScrollArea pour enfant. Le redimensionnement suivra.

    Soit dit en passant, je te recommande l'utilisation du Designer.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    Bonjour et merci pour ta réponse et ton aide



    Citation Envoyé par VinsS Voir le message
    Le QTabWidget est la boîte à onglets dans son entièreté, et, si je te suis bien, tu aimerai une QScrollArea dans chaque onglet
    Effectivement, c'est bien ça que je veux faire

    Citation Envoyé par VinsS Voir le message
    , si c'est bien cela, cette QScrollArea devrait se trouver dans un widget et non pas là où tu la mise. Ensuite, tu ajoutes ce widget au QTabWidget avec addTab(monWidget, "Nom")
    Dans ce cas, je peux me contenter d'utiliser mon widget attributeWidget ? me permettant ainsi de ne modifier qu'une seule ligne de code

    self.addTab(scrollArea, objectName)
    devient
    self.addTab(attributeWidget , objectName)

    A noter que j'ai déjà essayé mais je perd totalement le scroll

    Citation Envoyé par VinsS Voir le message
    Soit dit en passant, je te recommande l'utilisation du Designer.
    Je débute un peu dans le sujet et je ne connaissais pas l’existence d'un designer . Du coup, j'ai chercher et je suis arrivé sur ce lien : http://tcuvelier.developpez.com/tuto...t/qt-designer/
    mais les liens sont mauvais
    Le savoir est une arme alors soyons armés

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Non, en fait tu ne peux pas le faire de cette façon, le QScrollArea doit être dans un QWidget séparé et ensuite seulement ajouté au QTabWidget.

    En mode simplifié:
    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
     
        self.tabWidget = QTabWidget(self) # a toi de voir pour le parent
        self.widget_1 = QWidget()
        self.vlayout = QVBoxLayout()
        self.scrollArea = QScrollArea
        self.vlayout.addWidget(self.scrollArea)
        self.gridlayout = QGridLayout() # ou QVBoxLayout ou QHBoxLayout selon ton besoin
        #Ici tu crées tes widgets suivant et tu les mets dans le gridLayout
        ...
        self.vlayout.addLayout(self.gridlayout)
        # Ceci est important
        self.widget_1.setLayout(self.vlayout)
        self.tabWidget.addTab(self.widget_1)
        # Et puis les onglets suivant
        self.widget_2 = QWidget()
        ...
    Pour le Designer souvent il est intégré au package de Qt, ou un package Qt dev, tu es sous quel OS, Windows, Linux, OSX ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    Je viens de trouver :
    Il suffit d'appliquer la méthode setWidgetResizable avec la valeur True pour que la QScrollArea se redimensionne toute seule

    EDIT: j'avais pas vu ta réponse. Je vais regardé le code que tu me propose pour comprendre les " bonnes pratiques "

    Citation Envoyé par VinsS Voir le message
    Pour le Designer souvent il est intégré au package de Qt, ou un package Qt dev, tu es sous quel OS, Windows, Linux, OSX ?
    Je suis sur WIndows
    Le savoir est une arme alors soyons armés

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Et tu as installé PyQt4 à partir d'ici:

    http://www.riverbankcomputing.co.uk/.../pyqt/download

    parce que cette installation est complète pour Windows, Faut que tu trouves designer.exe ou son lanceur dans la liste de tes applications.

    Sinon, Designer fait partie de Qt Creator

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    Il semblerait que PyQt4 soit de base dans le dossier Python27 (je n'utilise pas les versions supérieurs)
    J'ai pu testé le designer qui semble prometteur

    Merci pour tout
    Je pense que je peux marquer ce sujet résolu
    Le savoir est une arme alors soyons armés

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

Discussions similaires

  1. Ajuster la largeur d'une parbox à la largeur d'un mot
    Par Cecilka dans le forum Mise en forme
    Réponses: 2
    Dernier message: 25/03/2008, 14h00
  2. Ajuster des largeurs ou des hauteurs
    Par JeanMarc_T2k dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 13/03/2008, 11h16
  3. div ajustables en largeur
    Par anti-conformiste dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 25/01/2007, 09h40
  4. [CSS] Largeur d'un bloc en fonction de la fenêtre
    Par PRomu@ld dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 04/07/2006, 16h15
  5. Ajusté les Axes d'un graphe en fonction des données rentrée!
    Par Ma2thieu dans le forum Composants VCL
    Réponses: 5
    Dernier message: 09/07/2004, 01h34

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