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 :

Dimensionner automatiquement un QTableView


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Par défaut Dimensionner automatiquement un QTableView
    Salut à tous,

    J'ai un problème avec PyQT,
    J'essaye de mettre de multiple QTableView dans un QGridLayout.
    Il marche bien pour la taille standard de QTableView, mais quand j'utilise une configuration de Largeur spécifique comme ce layout.addWidget (QtGui. QTableView (), 0,0,1,2), il bloque la Largeur du QTableView .
    Je veux obtenir un QTableView double la taille d'un par défaut.

    Voici un exemple du code que j'ai.

    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
    20
    21
        def addColumn(self,indData,columnTitle,rowTable,columnTable,heightColumn,widthColumn):
            self.verticalLayout = qt.QVBoxLayout()
            self.label = qt.QLabel(self)
            self.label.setText(columnTitle)
            self.verticalLayout.addWidget(self.label)
            self.tableView = qt.QTableView(self)
            self.tableView.horizontalHeader()
            self.tableView.verticalHeader()
            self.tableView.setVerticalScrollBarPolicy(qc.Qt.ScrollBarAlwaysOff)
            self.tableView.setVerticalScrollMode(qt.QAbstractItemView.ScrollPerPixel)
            self.tableView.setHorizontalScrollBarPolicy(qc.Qt.ScrollBarAlwaysOff)
     
            m = Model(self.customers[indData],widthColumn)
            self.tableView.setModel(m)
            d = Delegate(self.labelSelection)
            self.tableView.setItemDelegate(d)   
            self.tableView.horizontalHeader().setResizeMode(qt.QHeaderView.Stretch)        
            self.tableView.resizeRowsToContents()
            self.tableView.resizeColumnsToContents()
            self.verticalLayout.addWidget(self.tableView)
            self.gridLayout.addLayout(self.verticalLayout,rowTable,columnTable,heightColumn,widthColumn)
    Comme vous pouvez voir, je voudrais obtenir deux labels (l'un à côté de l'autre) dans QtableView double.
    Avez-vous une idée comment je peux le fixer(réparer) ?

  2. #2
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Comme on a pas la moindre idée de ce que valent rowTable,columnTable,heightColumn,widthColumn difficile d'imaginer ce qui se passe.

    Les quatre arguments row, column, rowspan et columnspan ne sont pas des valeurs absolues mais relatives à l'ensemble de la grille. De plus la taille des widgets influera sur la taille des cases de la grille. Une colonne qui contient des boutons sera moins large qu'une autre qui contient des tableaux et un mélange de widgets très différent en taille peut conduire à des résultats peu esthétiques.

    Reproduis un exemple de ce que tu veux obtenir avec Qt Designer et regarde le code qui en résulte.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Par défaut Information supplémentaires
    Merci de votre réponse,

    Ci-dessous vous trouverez les différentes valeurs de rowTable,columnTable,heightColumn,widthColumn :

    c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    lass Fenetre(qt.QWidget):
        def __init__(self,parent=None):
            super(Fenetre, self).__init__(parent)
            self.etiquettesSelectionnees = []
            self.gridLayout = qt.QGridLayout(self)
            self.lesClients = self.lireBDD()
            self.ajouterColonne(0,"title1", 0, 0, 2, 1)
            self.ajouterColonne(1,"title2", 0, 1, 1, 1)
            self.ajouterColonne(2,"title3", 1, 1, 1, 1)
            self.ajouterColonne(3,"title4", 0, 2, 2, 2)
            self.ajouterColonne(4,"title5", 0, 4, 2, 1)
    Vous trouverez également un aperçu de mon interface et la visualisation du problème :

    Nom : ecranappli.PNG
Affichages : 747
Taille : 31,4 Ko

    Le problème rencontré : j'aimerai que les largeurs des colonnes soient identiques entre un tableView simple et un tableView double.

    Je vous remercie d'avance

  4. #4
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Qt partage équitablement les espaces disponibles, il faut lui forcer la main de temps en temps.

    Essaye en stretchant les colonnes, il faut rajouter trois lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ........
            self.ajouterColonne(2,"title3", 1, 1, 1, 1)
            self.ajouterColonne(3,"title4", 0, 2, 2, 2)
            self.ajouterColonne(4,"title5", 0, 4, 2, 1)
            self.gridLayout.setColumnStretch(0, 1)
            self.gridLayout.setColumnStretch(1, 1)
            self.gridLayout.setColumnStretch(3, 1)
    Maintenant, faudra voir ce que ça donnera lors de redimensionnement de l'interface.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Par défaut Remerciement
    Je vous remercie beaucoup, ça fonctionne parfaitement bien.
    Je vous souhaite une bonne journée
    Bye

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

Discussions similaires

  1. Ouvrir une fenetre dimensionnée automatiquement
    Par Nohman dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/05/2006, 20h07
  2. Réponses: 3
    Dernier message: 29/08/2005, 15h33
  3. Dimensionner automatiquement une fenetre
    Par ch5oun dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 20/04/2005, 15h18
  4. Re-dimensionnement automatique de composants
    Par ludo_7 dans le forum C++Builder
    Réponses: 10
    Dernier message: 16/05/2002, 16h35

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