===== Virtuální metody ===== V předcházejícím příkladu jsme na různé události reagovali pomocí metod připojených Qt funkcí //connect//. \\ Zkusme si nyní předefinovat nějakou virtuální metodu deklarovanou v nadřazené třídě. [[paint|virtuální metoda pro vykreslení vnořeného okénka]] Metoda **paintEvent** je ve třídě QWidget deklarovaná jako virtuální. Tato metoda je volána v okamžiku, kdy se má okno vykreslit na obrazovku. Naše třída **Widget** je odvozena od třídy **QWidget**. \\ V naší třídě si předefinujeme metodu paintEvent tak, aby kreslila barevný obdélník. \\ Využijeme k tomu objekt typy **QPainter**, který má vhodné metody pro kreslení. import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * class Widget (QWidget) : def __init__ (self) : super().__init__() def color (self, painter, r, g, b) : painter.setPen (QColor.fromRgb (r, g, b)) def line (self, painter, x1, y1, x2, y2) : painter.drawLine (x1, y1, x2, y2) def paintEvent (self, event) : # QPaintEvent *event p = QPainter () p.begin (self) w = self.width () h = self.height () self.color (p, 255, 0, 0) self.line (p, 0, 0, w-1, 0) self.color (p, 0, 255, 0) self.line (p, w-1, 0, w-1, h-1) self.color (p, 0, 0, 255) self.line (p, w-1, h-1, 0, h-1) self.color (p, 255, 200, 0) self.line (p, 0, h-1, 0, 0) p.end () if __name__ == "__main__" : app = QApplication (sys.argv) win = Widget () win.show () sys.exit (app.exec_()) {{paint.png}} Dokumentaci k jednotlivým metodám třídy QPainter naleznete na https://doc.qt.io/qt-5/qpainter.html