写一个qt在一张图片上使用鼠标绘制圆形的程序
时间: 2023-02-01 11:02:51 浏览: 130
下面是使用 Qt 绘制圆形的简单示例代码:
```
#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsEllipseItem>
#include <QMouseEvent>
class CircleDrawer : public QGraphicsView
{
Q_OBJECT
public:
CircleDrawer(QWidget *parent = 0) : QGraphicsView(parent)
{
setScene(new QGraphicsScene(this));
setRenderHint(QPainter::Antialiasing); // 启用抗锯齿
setTransformationAnchor(AnchorUnderMouse); // 图形视图的转换锚定在鼠标下方
setResizeAnchor(AnchorUnderMouse); // 图形视图的调整锚定在鼠标下方
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // 不显示垂直滚动条
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // 不显示水平滚动条
setFrameShape(QFrame::NoFrame); // 不显示边框
}
protected:
void mousePressEvent(QMouseEvent *event) override
{
// 如果鼠标左键按下,则创建一个圆形并将其添加到场景中
if (event->button() == Qt::LeftButton) {
QGraphicsEllipseItem *circle = new QGraphicsEllipseItem(event->pos().x() - 25, event->pos().y() - 25, 50, 50);
circle->setPen(QPen(Qt::red, 3)); // 设置圆形的画笔
scene()->addItem(circle);
}
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
CircleDrawer window;
window.show();
return app.exec();
}
```
上面的代码中,我们创建了一个名为 CircleDrawer 的 QGraphicsView 类的子类,该类的对象可以在其中绘制圆形。CircleDrawer 类重写了 QGraphicsView 类的 mousePressEvent() 事件处理程序,以便在鼠标左键按下时
阅读全文