def paintEvent(event)
case @drawing
when 'formula'
painter = Qt::Painter.new(self)
painter.setRenderHint(Qt::Painter::Antialiasing, true)
painter.setPen(Qt::blue)
painter.setFont(Qt::Font.new('Arial', 12))
painter.drawText(rect, Qt::AlignCenter, 'Hello')
@drawing = 'none'
return
#------------------------
end
end
Проблема с QPaint
QPaintEngine::setSystemClip: should not be changed while engine is active.
QPaintEngine::setSystemRect: should not be changed while engine is active.
Кусок кода
Код:
Что это может быть?
поэтому, когда происходит заход в данную функцию на следующем событии, он тебе сообщает что движок уже активен - что то рисует =)
Добавь там delete painter в конце функции, или что там в питоне освобождает память.
Код:
@painter = Qt::Painter.new(self)
@painter.setRenderHint(Qt::Painter::Antialiasing, true)
@painter.setPen(Qt::blue)
@painter.setFont(Qt::Font.new('Arial', 12))
@painter.drawText(rect, Qt::AlignCenter, 'Hello')
remove_instance_variable :@painter
@drawing = 'none'
@painter.setRenderHint(Qt::Painter::Antialiasing, true)
@painter.setPen(Qt::blue)
@painter.setFont(Qt::Font.new('Arial', 12))
@painter.drawText(rect, Qt::AlignCenter, 'Hello')
remove_instance_variable :@painter
@drawing = 'none'
Ошибка таже :(
Кстати это Ruby, ну да они с питоном похожи :)
Код:
painter = Qt::Painter.new(self)
painter.setRenderHint(Qt::Painter::Antialiasing, true)
painter.setPen(Qt::blue)
painter.setFont(Qt::Font.new('Arial', 12))
painter.drawText(rect, Qt::AlignCenter, 'Hello')
painter.end
@drawing = 'none'
painter.setRenderHint(Qt::Painter::Antialiasing, true)
painter.setPen(Qt::blue)
painter.setFont(Qt::Font.new('Arial', 12))
painter.drawText(rect, Qt::AlignCenter, 'Hello')
painter.end
@drawing = 'none'