⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diagramitem.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
字号:
/******************************************************************************** Copyright (C) 2007-2007 Trolltech ASA. All rights reserved.**** This file is part of the example classes of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include <QtGui>#include "diagramitem.h"#include "arrow.h"DiagramItem::DiagramItem(DiagramType diagramType, QMenu *contextMenu,             QGraphicsItem *parent, QGraphicsScene *scene)    : QGraphicsPolygonItem(parent, scene){    myDiagramType = diagramType;    myContextMenu = contextMenu;    QPainterPath path;    switch (myDiagramType) {        case StartEnd:            path.moveTo(200, 50);            path.arcTo(150, 0, 50, 50, 0, 90);            path.arcTo(50, 0, 50, 50, 90, 90);            path.arcTo(50, 50, 50, 50, 180, 90);            path.arcTo(150, 50, 50, 50, 270, 90);            path.lineTo(200, 25);            myPolygon = path.toFillPolygon();            break;        case Conditional:            myPolygon << QPointF(-100, 0) << QPointF(0, 100)                      << QPointF(100, 0) << QPointF(0, -100)                      << QPointF(-100, 0);            break;        case Step:            myPolygon << QPointF(-100, -100) << QPointF(100, -100)                      << QPointF(100, 100) << QPointF(-100, 100)                      << QPointF(-100, -100);            break;        default:            myPolygon << QPointF(-120, -80) << QPointF(-70, 80)                      << QPointF(120, 80) << QPointF(70, -80)                      << QPointF(-120, -80);            break;    }    setPolygon(myPolygon);    setFlag(QGraphicsItem::ItemIsMovable, true);    setFlag(QGraphicsItem::ItemIsSelectable, true);}void DiagramItem::removeArrow(Arrow *arrow){    int index = arrows.indexOf(arrow);    if (index != -1)        arrows.removeAt(index);}void DiagramItem::removeArrows(){    foreach (Arrow *arrow, arrows) {        arrow->startItem()->removeArrow(arrow);        arrow->endItem()->removeArrow(arrow);        scene()->removeItem(arrow);        delete arrow;    }}void DiagramItem::addArrow(Arrow *arrow){    arrows.append(arrow);}QPixmap DiagramItem::image() const{    QPixmap pixmap(250, 250);    pixmap.fill(Qt::transparent);    QPainter painter(&pixmap);    painter.setPen(QPen(Qt::black, 8));    painter.translate(125, 125);    painter.drawPolyline(myPolygon);    return pixmap;}void DiagramItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event){    scene()->clearSelection();    setSelected(true);    myContextMenu->exec(event->screenPos());}QVariant DiagramItem::itemChange(GraphicsItemChange change,                     const QVariant &value){    if (change == QGraphicsItem::ItemPositionChange) {        foreach (Arrow *arrow, arrows) {            arrow->updatePosition();        }    }    return value;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -