python - Qscrollarea 不显示滚动条并且布局弹出不合适

标签 python qt pyqt

我昨晚花了很多时间试图让这个 QScrollArea 工作,但没有运气。我想做的是在菜单下方添加顶部水平菜单布局和可滚动垂直内容布局。滚动条不可见,一旦我向其中添加新元素(通过单击菜单按钮之一),内容布局就会弹出。

请帮帮我。 :)

问候, 拉尔斯·埃里克

import sys 
from PyQt4 import QtCore, QtGui, Qt 

class MainWindow( QtGui.QMainWindow ): 

    def __init__( self ): 

        QtGui.QMainWindow.__init__( self ) 

        self.centralWidget = QtGui.QWidget() 
        self.setCentralWidget( self.centralWidget ) 

        #Main Layout 
        layout = QtGui.QVBoxLayout() 
        layout.setSpacing( 0 )         
        self.centralWidget.setLayout( layout ) 

        #Top Menu Layout 
        hLayout = QtGui.QHBoxLayout() 
        layout.addLayout( hLayout ) 

        i = 0 
        while i < 5: 
            addContent = QtGui.QPushButton( 'Add Content' ) 
            hLayout.addWidget( addContent ) 

            self.connect(addContent, QtCore.SIGNAL('clicked()'), self.addContent)             
            i += 1 

        #Content Layout 
        self.lowerWidget = QtGui.QWidget() 
        #self.lowerWidget.setMaximumSize( Qt.QSize(150, 250) ) 

        self.scrollArea = QtGui.QScrollArea() 
        self.scrollArea.setWidget( self.lowerWidget )           

        layout.addWidget( self.lowerWidget )   

        self.vLayout = QtGui.QVBoxLayout() 
        self.lowerWidget.setLayout( self.vLayout ) 

        i = 0 
        while i < 25: 
            label = QtGui.QLabel( 'Content' ) 
            self.vLayout.addWidget( label ) 
            i += 1             


    def addContent(self): 

        label = QtGui.QLabel( 'Content' ) 
        self.vLayout.addWidget( label ) 


if __name__ == '__main__': 

    app = QtGui.QApplication(sys.argv) 
    mainWin = MainWindow() 
    mainWin.show() 
    sys.exit(app.exec_())

最佳答案

这看起来不对:

self.scrollArea = QtGui.QScrollArea() 
self.scrollArea.setWidget( self.lowerWidget )           

layout.addWidget( self.lowerWidget )

您将 lowerWidget 添加到滚动区域,只是为了将其添加到下一步的布局中,这会从滚动区域中删除 lowerWidget 并重新设置其顶级小部件的父级。 您必须将滚动区域添加到布局中:

self.scrollArea = QtGui.QScrollArea() 
self.scrollArea.setWidget( self.lowerWidget )       

layout.addWidget( self.scrollArea )

关于python - Qscrollarea 不显示滚动条并且布局弹出不合适,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4476072/

相关文章:

python - Django 中的非全局中间件

c++ - 如何从 QDataStream 中读取数组

c++ - QCommandLine选项 : How to parse the same parameter multiple times?

python - 动态创建的选项卡-选项卡关闭时销毁对象

python - 与重复索引合并 - 行数大于预期

python - 按索引访问数组

python - PyQt:如何确定同时按下哪个鼠标按钮以及哪个 QTableView 的单元格?

python - 适用于 OSX 10.6 上 PyQt 的 Qt 设计器

python3 strftime 输出因平台而异

c++ - VS2013 的 Qt4 到 Qt5 迁移链接器警告(和错误)