我在一个QFrame
上显示多个QLabels
,放在QScrollArea
中。在
我可以告诉QScrollArea
使QLabels
与{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_()
QScrollArea::ensureWidgetVisible就可以了。在
您可以使用
QSCrollArea::childAt ( int x, int y ).isvisble()
检查小部件的可见性。在isVisible
与您要执行的操作不同。它告诉小部件是否隐藏。即使它不在视口中,除非您hide
它,否则它是可见的。在您可以使用
visibleRegion
。绘制事件应该发生在小部件的区域。如果标签在视口之外,则其区域应为空区域。在相关问题 更多 >
编程相关推荐