提交 8b053631 编写于 作者: mahuifa's avatar mahuifa

注释:为项目添加必要注释

上级 43e45df6
#---------------------------------------------------------------------------------------
# @功能: QGraphicsItem基本图元演示
# 1、包含内置的 直线、矩形、椭圆、多边形、简单文本、富文本、图片、绘图路径、窗口部件基本图元;
# 2、使用自定义散点图元;
# 3、实现所有图元鼠标选中、移动功能,包括窗口部件图元;
# 4、解决自定义图元鼠标移动存在残留问题。
# @编译器: Desktop Qt 5.12.5 MSVC2017 64bit(也支持其它编译器)
# @Qt IDE D:/Qt/Qt5.12.5/Tools/QtCreator/share/qtcreator
#
# @开发者 mhf
# @邮箱 1603291350@qq.com
# @时间 2022-09-02 23:17:22
# @备注
#---------------------------------------------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
......
......@@ -17,6 +17,8 @@ MainWindow::MainWindow(QWidget *parent)
{
ui->setupUi(this);
this->setWindowTitle("QGraphicsItem基本图元演示");
initToolBar();
ui->graphicsView->setScene(&m_scene); // 添加绘图场景
......@@ -38,7 +40,7 @@ void MainWindow::initToolBar()
QPushButton* but3 = new QPushButton("椭圆");
QPushButton* but4 = new QPushButton("多边形");
QPushButton* but5 = new QPushButton("简单文本");
QPushButton* but6 = new QPushButton("文本");
QPushButton* but6 = new QPushButton("文本");
QPushButton* but7 = new QPushButton("图片");
QPushButton* but8 = new QPushButton("路径");
QPushButton* but9 = new QPushButton("窗口");
......
......@@ -14,25 +14,41 @@ QGraphicsPointsItem::~QGraphicsPointsItem()
}
/**
* @brief 返回绘制的画笔对象
* @return
*/
QPen QGraphicsPointsItem::pen() const
{
return m_pen;
}
/**
* @brief 设置画笔对象
* @param pen
*/
void QGraphicsPointsItem::setPen(const QPen &pen)
{
if (m_pen == pen)
return;
prepareGeometryChange();
prepareGeometryChange(); // 准备几何图形更改,以使QGraphicsScene的索引保持最新
m_pen = pen;
update();
}
/**
* @brief 返回用于绘制的点数据
* @return
*/
QPolygonF QGraphicsPointsItem::points() const
{
return m_points;
}
/**
* @brief 设置用于绘制的散点数据
* @param points
*/
void QGraphicsPointsItem::setPoints(const QPolygonF &points)
{
if (m_points == points)
......@@ -53,10 +69,25 @@ QRectF QGraphicsPointsItem::boundingRect() const
return m_points.boundingRect().adjusted(-pad, -pad, pad, pad);
}
/**
* @brief 判断是否包含传入的点
* @param point 传入数据点
* @return 包含返回true,否则返回false
*/
bool QGraphicsPointsItem::contains(const QPointF &point) const
{
#if 1 // 用这种方法只有QPolygonF中有的点才返回true
for(auto pointf : m_points)
{
if(pointf == point)
{
return true;
}
}
return false;
#else // 用这种方法只要包含在当前图元边框矩形内的点都返回true
return QGraphicsItem::contains(point);
#endif
}
/**
......@@ -90,6 +121,12 @@ static void qt_graphicsItem_highlightSelected(
painter->drawRect(item->boundingRect().adjusted(pad, pad, -pad, -pad));
}
/**
* @brief 重写这个函数进行自定义图案绘制
* @param painter 用于绘制的画家对象
* @param option QStyleOptionsGraphicsItem类用于描述绘制QGraphicsItem所需的参数。
* @param widget
*/
void QGraphicsPointsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(widget)
......
/******************************************************************************
* @文件名 qgraphicspointsitem.h
* @功能 自定义散点图元,解决了鼠标移动残留问题
*
* @开发者 mhf
* @邮箱 1603291350@qq.com
* @时间 2022/09/02
* @备注
*****************************************************************************/
#ifndef QGRAPHICSPOINTSITEM_H
#define QGRAPHICSPOINTSITEM_H
......
TEMPLATE = subdirs
SUBDIRS += GraphicsItem # 图元项Demo
SUBDIRS += GraphicsItem # QGraphicsItem基本图元演示
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册