1
我有一個QScrollArea
,我將添加一些其他小部件。我想要的是,QScrollArea
開始滾動時,其中的小部件擴大其大小。QScrollArea正在擴展而不是滾動
但是,滾動區域開始自己擴大。
下面是我使用的代碼:
import sys
from PyQt4 import QtGui, QtCore
class Widget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.vbox = QtGui.QVBoxLayout()
self.setLayout(self.vbox)
def add_button(self):
tmp = QtGui.QPushButton("...", self)
self.vbox.addWidget(tmp)
class ScrollArea(QtGui.QScrollArea):
def __init__(self, parent=None):
QtGui.QScrollArea.__init__(self, parent)
self.vbox = QtGui.QVBoxLayout()
self.w = Widget(self)
self.setWidget(self.w) #set the widget to provide scrolling for here
self.vbox.addWidget(self.w)
self.plus = QtGui.QPushButton("button", self)
self.connect(self.plus, QtCore.SIGNAL("clicked()"), self.add_button)
self.vbox.addWidget(self.plus)
self.setLayout(self.vbox)
def add_button(self):
self.w.add_button()
app = QtGui.QApplication(sys.argv)
main = ScrollArea()
main.show()
sys.exit(app.exec_())
我也試着設置子部件self.w
的佈局在類ScrollArea
,而不是在自己的類,但它有同樣的效果。
根據文檔的'QScrollArea'能夠顯示裏面* *一個小部件,你必須添加使用'setWidget'方法的窗口小部件,不建立您自己的佈局並手動將其應用於該區域。請參閱[這裏](http://qt-project.org/doc/qt-4.8/qscrollarea.html#details)。 – Bakuriu 2014-09-01 19:57:05
是的,你是對的,我忘了那個。但不幸的是,添加'self.setWidget(self.w)'行不會改變行爲。根據文檔,它應該提供現在滾動的小部件'self.w',但不知道它不。 – 2014-09-01 21:19:02
你仍然在調用'setLayout'。 *那是什麼打破了這種行爲。 – Bakuriu 2014-09-02 06:53:55