uop:paint
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ě.
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_())
Dokumentaci k jednotlivým metodám třídy QPainter naleznete na https://doc.qt.io/qt-5/qpainter.html
uop/paint.txt · Last modified: 2020/10/26 12:33 by 127.0.0.1