如何将圆弧添加到 QGraphicsView 的前景

发布于 2024-09-19 03:11:18 字数 217 浏览 5 评论 0原文

如何将 QPainter 弧添加到 QGraphicsView 前景。 我找到了 QGraphicsView.drawForeground(self, QPainter, QRectF),但我不明白如何使用它。我是qt新手。我也知道可以向 QGraphicsScene 添加艺术,但我需要场景做其他事情。或者是否有更简单的方法将场景上的圆弧添加到 QGraphicsView 中?弧必须是可变的。 希望有人能帮助我。

how is it possible to add an QPainter arc to the QGraphicsView foreground.
I found QGraphicsView.drawForeground (self, QPainter, QRectF), but I don't understand how to use it. I am new to qt. I also know that it is possible to add an art to the QGraphicsScene, but I need the scene for something else. Or is there an easier way to add an arc over the scene to the QGraphicsView? The arc must be variable.
Hope someone can help me.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

豆芽 2024-09-26 03:11:18

您需要创建自己的QGraphicsView 子类并实现drawForeground() 方法。您可以使用以下代码作为示例:

MyGraphicsView.h:

#ifndef MYGRAPHICSVIEW_H
#define MYGRAPHICSVIEW_H

#include <QGraphicsView>

class MyGraphicsView : public QGraphicsView
{
public:
    MyGraphicsView(QWidget * parent = 0);
    MyGraphicsView(QGraphicsScene * scene, QWidget * parent = 0);
    virtual ~MyGraphicsView();

protected:
    void drawForeground(QPainter * painter, const QRectF & rect);
};

#endif  /* MYGRAPHICSVIEW_H */

MyGraphicsView.cpp:

#include "MyGraphicsView.h"

MyGraphicsView::MyGraphicsView(QWidget * parent) :
    QGraphicsView(parent)
{
}

MyGraphicsView::MyGraphicsView(QGraphicsScene * scene, QWidget * parent) :
    QGraphicsView(scene, parent)
{
}

MyGraphicsView::~MyGraphicsView()
{
}

void MyGraphicsView::drawForeground(QPainter * painter, const QRectF & rect)
{
    int startAngle = 30 * 16;
    int spanAngle = 120 * 16;
    painter->drawArc(rect, startAngle, spanAngle);
}

You will need to create your own subclass of QGraphicsView and implement the drawForeground() method. You can use this code as an example:

MyGraphicsView.h:

#ifndef MYGRAPHICSVIEW_H
#define MYGRAPHICSVIEW_H

#include <QGraphicsView>

class MyGraphicsView : public QGraphicsView
{
public:
    MyGraphicsView(QWidget * parent = 0);
    MyGraphicsView(QGraphicsScene * scene, QWidget * parent = 0);
    virtual ~MyGraphicsView();

protected:
    void drawForeground(QPainter * painter, const QRectF & rect);
};

#endif  /* MYGRAPHICSVIEW_H */

MyGraphicsView.cpp:

#include "MyGraphicsView.h"

MyGraphicsView::MyGraphicsView(QWidget * parent) :
    QGraphicsView(parent)
{
}

MyGraphicsView::MyGraphicsView(QGraphicsScene * scene, QWidget * parent) :
    QGraphicsView(scene, parent)
{
}

MyGraphicsView::~MyGraphicsView()
{
}

void MyGraphicsView::drawForeground(QPainter * painter, const QRectF & rect)
{
    int startAngle = 30 * 16;
    int spanAngle = 120 * 16;
    painter->drawArc(rect, startAngle, spanAngle);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文