qt QGraphicsView画圆
时间: 2023-07-02 08:04:12 浏览: 243
下面是使用 QGraphicsView 在场景中画一个圆的示例代码:
```cpp
#include <QtWidgets>
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QGraphicsScene scene;
QGraphicsView view(&scene);
// 添加圆形到场景中
QRectF rect(0, 0, 100, 100);
scene.addEllipse(rect, QPen(Qt::black), QBrush(Qt::red));
view.show();
return app.exec();
}
```
在这个示例中,我们首先创建了一个 QGraphicsScene 和一个 QGraphicsView 对象。然后,我们使用 `addEllipse` 方法将一个圆形添加到场景中。这个方法有三个参数:圆形的矩形区域、边框画笔和填充画刷。在这个例子中,我们使用了一个黑色画笔和一个红色填充画刷,来绘制一个红色的圆形。
最后,我们将 QGraphicsView 显示出来,并进入应用程序的主事件循环中。当运行这个程序时,应该会看到一个红色的圆形在窗口中央。
相关问题
qt QGraphicsItem画圆
使用Qt的QGraphicsItem类可以绘制圆。下面是一个简单的示例代码:
```cpp
#include <QGraphicsEllipseItem>
#include <QPainter>
class CircleItem : public QGraphicsEllipseItem
{
public:
CircleItem(qreal x, qreal y, qreal width, qreal height, QGraphicsItem *parent = nullptr)
: QGraphicsEllipseItem(x, y, width, height, parent)
{
}
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
{
painter->setBrush(Qt::green);
painter->drawEllipse(rect());
}
};
```
在上面的代码中,我们定义了一个CircleItem类,它继承自QGraphicsEllipseItem类,用于绘制圆。
在paint()函数中,我们首先设置画刷为绿色,然后使用QPainter的drawEllipse()函数绘制圆。
接下来,您可以使用以下代码将CircleItem添加到QGraphicsScene中:
```cpp
CircleItem *circle = new CircleItem(0, 0, 100, 100);
QGraphicsScene *scene = new QGraphicsScene;
scene->addItem(circle);
```
在上面的代码中,我们创建了一个CircleItem对象,并将其添加到QGraphicsScene中。
QT QGraphicsItem画圆
可以通过继承QGraphicsItem类并实现其paint函数来画出圆形。以下是一个简单的示例代码:
```cpp
#include <QGraphicsItem>
#include <QPainter>
class MyCircle : public QGraphicsItem
{
public:
MyCircle(qreal x, qreal y, qreal radius)
: m_x(x), m_y(y), m_radius(radius)
{}
QRectF boundingRect() const override
{
return QRectF(m_x - m_radius, m_y - m_radius, m_radius * 2, m_radius * 2);
}
void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override
{
painter->drawEllipse(QPointF(m_x, m_y), m_radius, m_radius);
}
private:
qreal m_x;
qreal m_y;
qreal m_radius;
};
```
在使用时,可以创建MyCircle对象,并将其添加到QGraphicsScene中即可。例如:
```cpp
MyCircle* circle = new MyCircle(50, 50, 30);
QGraphicsScene* scene = new QGraphicsScene;
scene->addItem(circle);
```
这将在场景中画出一个圆心坐标为(50, 50),半径为30的圆形。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)