qt制作一个画板_Qt 一个简易画板实现(Graphics View).pdf

Qt ⼀个简易画板的实现(Graphics View)

Qt 学习之路(32): ⼀个简易画板的实现(Graphics View)

这⼀次将介绍如何使⽤ Graphics View 来实现前⾯所说的画板。前⾯说了很多有关

Graphics View的好话,但是 有具体的实例很难说究竟好在哪⾥。现在我们就把前⾯

的内容使⽤ Graphics View 重新实现⼀下,⼤家可以对⽐⼀下看有什么区别。

同前⾯相似的内容就不再叙述了,我们从上次代码的基础上进⾏修改,以便符合我们

的需要。⾸先来看MainWindow 的代码:

mainwindow .cpp

#include "mainwindow .h"

MainWindow ::MainWindow(QWidget *parent)

: QMainWindow(parent)

{

QToolBar *bar this->addToolBar("Tools");

QActionGroup *group new QActionGroup(bar);

QAction *drawLineAction new QAction("Line", bar);

drawLineAction->setIcon(QIcon(":/line.png"));

drawLineAction->setToolTip(tr("Draw a line."));

drawLineAction->setStatusTip(tr("Draw a line."));

drawLineAction->setCheckable(true);

drawLin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Qt的QGraphicsView创建一个简单画板的示例代码: mainwindow.h: ``` #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class QGraphicsScene; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void on_actionClear_triggered(); private: Ui::MainWindow *ui; QGraphicsScene *scene; }; #endif // MAINWINDOW_H ``` mainwindow.cpp: ``` #include "mainwindow.h" #include "ui_mainwindow.h" #include <QGraphicsScene> #include <QGraphicsView> #include <QGraphicsEllipseItem> #include <QMouseEvent> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); // 创建场景和视图 scene = new QGraphicsScene(this); QGraphicsView *view = new QGraphicsView(scene); setCentralWidget(view); setWindowTitle(tr("Simple Paint")); // 设置视图大小 view->setFixedSize(400, 400); // 设置画笔颜色和宽度 QPen pen; pen.setColor(Qt::black); pen.setWidth(3); // 监听视图的鼠标事件 view->viewport()->installEventFilter(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_actionClear_triggered() { // 清空场景的所有图形项 scene->clear(); } bool MainWindow::eventFilter(QObject *watched, QEvent *event) { if (watched == ui->graphicsView->viewport() && event->type() == QEvent::MouseButtonPress) { // 获取鼠标点击的位置 QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event); QPointF pos = ui->graphicsView->mapToScene(mouseEvent->pos()); // 创建一个椭圆图形项并添加到场景 QGraphicsEllipseItem *ellipse = new QGraphicsEllipseItem(pos.x() - 10, pos.y() - 10, 20, 20); ellipse->setPen(pen); scene->addItem(ellipse); return true; } return QMainWindow::eventFilter(watched, event); } ``` 在这个示例代码,我们创建了一个QGraphicsScene和一个QGraphicsView,用于显示绘制的图形。然后,我们设置视图的大小并监听视图的鼠标事件。当用户在视图点击鼠标时,我们获取鼠标点击的位置,创建一个椭圆图形项并添加到场景。最后,我们设置画笔颜色和宽度,并在清空场景时删除所有图形项。 注意:在这个示例代码,我们使用了事件过滤器来监听视图的鼠标事件。如果你对事件过滤器不熟悉,可以先了解一下Qt的事件系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值