Bonjour,
j'aimerai savoir comment faire pour mettre une scollbar vertical sur un QWidget.
Merci
Alaninho
Bonjour,
j'aimerai savoir comment faire pour mettre une scollbar vertical sur un QWidget.
Merci
Alaninho
Dans n'importe quel widget, tu peux ajouter une QScrollBar
Toutefois, si le but recherché est d'avoir une région scrollable dans
une fenêtre par exemple le mieux des d'ajouter à celle ci une
QAbstractScrollArea dans laquelle tu placera les widgets qui t'intéressent.
La méthode setVerticalScrollBar te permettra d'avoir ce que tu cherche.
![]()
C'est encore moi,
Il semblerait que QScrollArea soit plus précisément adapté à ce que tu veux
faire.
J'ai été trop vite pour répondre, désolé !
Oui, j'avais regarder, mais je sais pas du tout comment l'utilisé, aurais tu un exmaple? stp
Quelque chose comme ça:
Uploaded with ImageShack.us[/IMG]
Le code est ici:
http://bazaar.launchpad.net/~vincent.../paqager/files
c'est le fichier 'ui_subCategories.py'
pour le tester, faudra que tu changes la ligne 368
Bon t'auras pas les icônes mais tu peux aussi les remplacer par n'importe quoi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ui.setupUi(subCategories, None)
Edit: Le panneau gris est aussi une scrollArea, cliques sur 'Education'.
j'ai réussi a mettre le widget dans le QScrollArea mais mon problème maintenant c'est que le widget ne grandit pas dans l'Area donc mais scrollbar serve rien.
Quand j'appuie sur le bouton +aligt, le widget doit grandir mais la il reste de la même taille dans le QScrollBar.
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 from PyQt4.QtGui import * from PyQt4.QtCore import * import msa_input import layout_controller class Multi_msa_input(QWidget): #Create the Main Window input def __init__(self): super(Multi_msa_input, self).__init__() self.tab_msa=[] self.control=layout_controller.Layout_controller(self) self.msa_input=msa_input.Msa_input() self.button_submit=QPushButton('submit', self) self.button_plus=QPushButton('+algt',self) self.layout=QVBoxLayout() self.layout.addWidget(self.msa_input) self.layout.addWidget(self.button_submit) self.layout.addWidget(self.button_plus) self.connect(self.button_plus,SIGNAL('clicked()'), self.plus_msa) self.connect(self.msa_input.button_file,SIGNAL('clicked()'), lambda msa=self.msa_input: self.choose_file(msa)) self.connect(self.msa_input.button_remove, SIGNAL('clicked()'), lambda msa=self.msa_input: self.clear(msa)) self.connect(self.button_submit, SIGNAL('clicked()'), self.submit) self.setWindowTitle('MsaCompare') self.setLayout(self.layout) self.scrollArea=QScrollArea() self.scrollArea.setWidget(self) #self.scrollArea.setMaximumSize(QSize(500,450)) self.scrollArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) #When you click on the button +aligt, you can to upload or copy/paste a new alignment def plus_msa(self): self.new_msa=msa_input.Msa_input() self.tab_msa.append(self.new_msa) self.layout.addWidget(self.new_msa) self.layout.addWidget(self.button_submit) self.layout.addWidget(self.button_plus) self.connect(self.new_msa.button_file,SIGNAL('clicked()'), lambda msa=self.new_msa: self.choose_file(msa)) self.connect(self.new_msa.button_remove, SIGNAL('clicked()'), lambda msa=self.new_msa: self.clear(msa))
Ben, il semble que ta scrollArea n'est placée nulle part.
Elle n'est pas dans le layout et n'a pas de parent.
Le parent n'est pas obligé mais Qt doit savoir ou placer ce widget.
Dans la fonction plus_msa(self) tu ajoutes de nouveaux widgets dans le Layout définit plus haut mais pas dans la scrollArea, ce me semble.
Partager