Я показываю несколько QLabels
на QFrame
, помещенный в QScrollArea
.Как узнать, виден ли дочерний виджет QScrollArea?
Я могу сказать QScrollArea
сделать любого из QLabels
видимых с QScrollArea.ensureWidgetVisible(QLabel)
, но я не могу найти способ, чтобы выяснить, является ли сейчас видимым или нет дочернего виджет. Я бы ожидал чего-то вроде QScrollArea.isWidgetVisible(QWidget)
.
Я попытался с помощью собственного метода ребенка, т.е. QLabel.isVisible()
, но независимо от того, отображается ли QLabel
или нет в QScrollArea
, он всегда возвращает True
(смотри пример ниже). Каково решение этого?
#!/usr/bin/env python
import sys
from PyQt4 import QtGui, QtCore
application = QtGui.QApplication(sys.argv)
class Area(QtGui.QScrollArea):
def __init__(self, child):
super(Area, self).__init__()
self.child = child
self.setWidget(self.child)
self.setFixedSize(100, 100)
class MainWidget(QtGui.QFrame):
def __init__(self, parent=None):
QtGui.QFrame.__init__(self, parent)
self.layout = QtGui.QVBoxLayout()
n = 1
while n != 10:
label = QtGui.QLabel('<h1>'+str(n)+'</h1>')
self.layout.addWidget(label)
n += 1
self.setLayout(self.layout)
def wheelEvent(self, event):
print "Wheel Event:"
for child in self.children()[1:]:
print child.isVisible()
event.ignore()
mainwidget = MainWidget()
area = Area(mainwidget)
area.show()
application.exec_()
безупречный! Спасибо :) – Benjamin