Никак не могу победить одно место в программе, такое ощущение, что там где-то врата в четвёртое измерение.
class Qt5WayButton(QWidget):
def __init__(self, parent = None):
QWidget.__init__(self, parent)
sp = QSizePolicy()
sp.setHeightForWidth(True)
self.setSizePolicy(sp)
grid = QGridLayout(self)
grid.setMargin(0)
grid.setSpacing(0)
self.m_upButton = NavigationButton(self)
self.m_downButton = NavigationButton(self)
self.m_leftButton = NavigationButton(self)
self.m_rightButton = NavigationButton(self)
self.m_centerButton = NavigationButton(self)
grid.addWidget(self.m_upButton, 0, 0, 1, 2)
grid.addWidget(self.m_downButton, 1, 0, 1, 2)
grid.addWidget(self.m_leftButton, 0, 0, 2, 1)
grid.addWidget(self.m_rightButton, 0, 1, 2, 1)
grid.addWidget(self.m_centerButton, 0, 0, 2, 2)
self.m_rendererBase = QtSvgPixmapCache(self)
# ...
def resizeEvent(self, event):
print "Qt5WayButton.resizeEvent"
# update masks
self.m_upButton.updateMask()
self.m_downButton.updateMask()
self.m_leftButton.updateMask()
self.m_rightButton.updateMask()
self.m_centerButton.updateMask()
QWidget.resizeEvent(self, event)
def paintEvent(self, event):
print "Qt5WayButton.paintEvent, before", event
QWidget.paintEvent(self, event)
print "Qt5WayButton.paintEvent, after", event
painter = QPainter(self)
self.m_rendererBase.render(painter, self.m_centerButton.geometry())
self.m_upButton.paint(painter)
print "Qt5WayButton.paintEvent, m_upButton", self.m_upButton
self.m_downButton.paint(painter)
print "Qt5WayButton.paintEvent, m_downButton", self.m_downButton
self.m_leftButton.paint(painter)
print "Qt5WayButton.paintEvent, m_leftButton", self.m_leftButton
self.m_rightButton.paint(painter)
print "Qt5WayButton.paintEvent, m_rightButton", self.m_rightButton
self.m_centerButton.paint(painter)
print "Qt5WayButton.paintEvent, m_centerButton", self.m_centerButton
а в консоль печатается:
__init__ in src
__init__ in src\qt5waybutton
__init__ in src\common
__init__ in skin
Qt5WayButton.resizeEvent
Qt5WayButton.paintEvent, before <PySide.QtGui.QPaintEvent object at 0x017F6940>
Qt5WayButton.paintEvent, after <PySide.QtGui.QPaintEvent object at 0x017F6940>
Qt5WayButton.paintEvent, m_upButton <src.qt5waybutton.navigationbutton.NavigationButton object at 0x017F0A20>
Qt5WayButton.paintEvent, m_downButton <src.qt5waybutton.navigationbutton.NavigationButton object at 0x017F0AE0>
Qt5WayButton.paintEvent, m_leftButton <src.qt5waybutton.navigationbutton.NavigationButton object at 0x017F0BA0>
Qt5WayButton.paintEvent, m_rightButton <src.qt5waybutton.navigationbutton.NavigationButton object at 0x017F0C60>
Qt5WayButton.paintEvent, m_centerButton <src.qt5waybutton.navigationbutton.NavigationButton object at 0x017F0D20>
Qt5WayButton.paintEvent, before <PySide.QtGui.QPaintEvent object at 0x017F6960>
Qt5WayButton.paintEvent, before <PySide.QtGui.QPaintEvent object at 0x017F6980>
Qt5WayButton.paintEvent, before <PySide.QtGui.QPaintEvent object at 0x017F6940>
Qt5WayButton.paintEvent, before <PySide.QtGui.QPaintEvent object at 0x017F68A0>
Т.е. в первый раз управление проходит строчку
QWidget.paintEvent(self, event)но во все последующие - нет. Однако как попадает в событие рисования опять (не вешается) я не понимаю.
событие изменения размера не происходит ни когда (кроме первого раза), но окошко растягивается, другие виджеты работают нормально.