QVBoxLayout
을 QScrollArea
안에 넣으려고 수직으로 스크롤 할 수 있습니다. 그러나 항목이 추가되지 않는 것 같습니다.스크롤 가능한 QVBoxLayout을 만드는 방법은 무엇입니까?
나는 ScrollArea가 사용하는 내부 위젯을 생성하고 그 안에 레이아웃을 배치해야한다는 제안을 보았습니다.하지만 작동하지 않는 것 같았습니다. 내 구조는 다음과 같이 가정한다 : 나는 곳으로
# Irrelevant, added for context (this works)
centralWidget = QWidget(self)
self.container = QVBoxLayout(centralWidget)
centralWidget.setLayout(self.container)
self.setCentralWidget(centralWidget)
# Where trouble starts
self.realmScroll = QScrollArea(self.container.widget())
self.realmScroll.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.realmLayout = QVBoxLayout(self.container.widget())
self.realmScrollInner = QWidget(self.realmScroll)
self.realmScrollInner.setLayout(self.realmLayout)
self.realmScroll.setWidget(self.realmScrollInner)
self.container.addWidget(self.realmScroll)
# Doesn't add to realmLayout
self.realmLayout.addWidget(QLabel("test"))
나는 아직도 (2 일) Qt를 배우고, 그래서 깊이있는 답변을 :
+-------------------------------
| QScrollArea(realmScroll)
| +----------------------------
| | QWidget(realmScrollInner)
| | +-------------------------
| | | QVBoxLayout(realmLayout)
그리고 코드는 이렇게 잘못 될 경우 고맙겠습니다.
업데이트는 :
바로 위로 realmScrollInner
까지 addWidget(QLabel())
작품 realmScroll
의 위젯으로 설정되어있는 것으로 보인다.
self.realmLayout.addWidget(QLabel("test"))
# realmScrollInner bound to realmScroll
realmScroll.setWidget(realmScrollInner)
self.container.addWidget(realmScroll)
# Access realmScroll's widget and then layout to add
realmScroll.widget().layout().addWidget(QLabel("test"))
하지만 addWidget
에 그 첫 번째 통화를 제거하면 위젯이 전에 : UI는 내가 확실하지 않다하는이 작업을 수행해야 표시 한 후 내가 요소를 추가 할 때문에 정말 정확 (레이아웃에 위젯이 없다), 이후에 추가 된 ScrollArea 위젯에 바인딩은 표시되지 않습니다. 아마도 ScrollArea는 다시 칠할 필요가 있습니다 (그러나 그 방법은 없습니다).
업데이트 2 : 레이아웃에 activate/update()
를 호출 않는 realmScroll 또는 포함 된 위젯 repaint()
호출은 아무것도하지 않습니다.
방금 이와 비슷한 문제가있었습니다. 여기에 해결책을보십시오 : http://stackoverflow.com/q/12781407/432913 – will