相关文章推荐
爱健身的杯子  ·  OpenCV Practise 03 - ...·  1 年前    · 

QT 自定义绘图

在 Qt 中进行自定义绘图,您可以使用 QPainter 类和绘图事件来实现自定义的绘图逻辑。以下是一般的步骤和关键概念:

  1. 继承 QWidget 或其子类:创建一个新的类,并继承自 QWidget 或其子类,作为自定义绘图的容器。
  2. 重写 paintEvent() 方法:在自定义的 QWidget 类中,重写 paintEvent() 方法。paintEvent() 方法是在窗口绘制需要更新时自动调用的函数,您可以在其中编写自己的绘图代码。
  3. 创建 QPainter 对象:在 paintEvent() 方法中,创建一个 QPainter 对象,并将其绑定到绘图设备上。您可以使用 QPaintEvent 类的 QPainter 参数中传入的 QPainter 对象,也可以使用 QWidget paintEvent 方法中创建一个 QPainter 对象。
  4. 绘制图形和内容:使用 QPainter 对象提供的方法进行绘图操作。例如,使用 drawLine() drawRect() drawText() 等方法绘制线条、矩形、文本等。
  5. 更新绘图:如果需要更新绘图,可以调用 QWidget update() 方法触发 paintEvent() 方法的重新绘制。

下面是一个简单的示例代码,演示了如何在自定义的 QWidget 中进行绘图:

class MyWidget : public QWidget
public:
    MyWidget(QWidget* parent = nullptr) : QWidget(parent) {}
protected:
    void paintEvent(QPaintEvent* event) override
        QPainter painter(this);
        painter.drawLine(10, 10, 100, 100);
        painter.drawRect(50, 50, 100, 100);
        painter.drawText(150, 150, "Hello, Qt!");

在上面的示例中,MyWidget 类继承自 QWidget,并重写了 paintEvent() 方法,在其中使用 QPainter 对象进行绘图操作。

要使用自定义的绘图窗口,您可以在应用程序中创建该窗口的实例,并将其添加到主窗口或其他容器中:

int main(int argc, char** argv)
    QApplication app(argc, argv);