2017-10-03 2 views
1

J'ai un QGroupBox avec un titre '123'. À l'intérieur du QGroupBox, il devrait y avoir un QScrollArea. Cela signifie que le titre '123' de QGrouBox devrait être en dehors de QScrollArea.Puis-je créer une zone de groupe en dehors d'une zone de défilement? PyQt4

Mes exemples de codes sont les suivants.

import sys 

import PyQt4 
from PyQt4.QtGui import * 
from PyQt4.QtCore import * 

class Example(QWidget): 
    def __init__(self, parent = None): 
     super().__init__() 

     btn = QPushButton('button') 

     scroll = QScrollArea() 
     scroll.setWidgetResizable(True) 
     scroll.setWidget(btn) 


     groupbox = QGroupBox('123') 
     groupbox.setLayout(scroll) 


     self.show() 


def main(): 
    app = QApplication(sys.argv) 
    main = Example() 
    main.show() 
    sys.exit(app.exec_()) 

Comme vous pouvez le voir ci-dessus, maintenant il retourne TypeError: setLayout(self, QLayout): argument 1 has unexpected type 'QScrollArea'.

Je me demande simplement si c'est réalisable? Merci!!

enter image description here

Répondre

0

Lorsque vous souhaitez ajouter le contenu à un QGroupBox que vous devez faire à travers une mise en page qui contient les widgets nécessaires, dans ce cas, car il est seulement un widget nous pouvons utiliser une mise en page, et dans cette mise en page nous ajoutons le widget que ce cas est le QScrollArea comme échantillon alors:

class Example(QWidget): 
    def __init__(self, parent = None): 
     super().__init__() 
     self.setLayout(QVBoxLayout()) 

     btn = QPushButton('button') 
     scroll = QScrollArea() 
     scroll.setWidgetResizable(True) 
     scroll.setWidget(btn) 

     groupbox = QGroupBox('123', self) 
     groupbox.setLayout(QVBoxLayout()) 
     groupbox.layout().addWidget(scroll) 

     self.layout().addWidget(groupbox) 

Screenshot:

enter image description here