Qt 繪圖系統基於三大核心類別:

此架構優勢:統一繪圖流程,易於擴充新特性、為不支援功能提供預設實作。另提供 QtOpenGL 模組支援 OpenGL 渲染。
自訂元件繼承 QWidget,重寫 paintEvent():
class PaintedWidget : public QWidget {
public:
PaintedWidget();
protected:
void paintEvent(QPaintEvent *event);
};
PaintedWidget::PaintedWidget() {
resize(800, 600);
setWindowTitle(tr("Paint Demo"));
}
void PaintedWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this); // 在 this widget 上繪圖
painter.drawLine(80, 100, 650, 500);
painter.setPen(Qt::red);
painter.drawRect(10, 10, 100, 400);
painter.setPen(QPen(Qt::green, 5));
painter.setBrush(Qt::blue);
painter.drawEllipse(50, 150, 400, 200);
}
QPainter 建構子接收 QPaintDevice*,QWidget 即為其子類。drawLine、drawRect、drawEllipse 等 drawXxx 函式對應各種圖形。

第二張圖展示 QPainter 豐富的繪圖函式族群。下章將深入解析 setPen()、setBrush() 等樣式控制。