资源简介

qt 绘制流程图示例程序,实现了节点的添加,以及节点之间连续操作

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include “diagramwindow.h“
#include “link.h“
#include “node.h“
#include “propertiesdialog.h“

DiagramWindow::DiagramWindow()
{
    scene = new QGraphicsScene(0 0 600 500);

    view = new QGraphicsView;
    view->setScene(scene);
    view->setDragMode(QGraphicsView::RubberBandDrag);
    view->setRenderHints(QPainter::Antialiasing
                         | QPainter::TextAntialiasing);
    view->setContextMenuPolicy(Qt::ActionsContextMenu);
    setCentralWidget(view);

    minZ = 0;
    maxZ = 0;
    seqNumber = 0;

    createActions();
    createMenus();
    createToolBars();

    connect(scene SIGNAL(selectionchanged())
            this SLOT(updateActions()));

    setWindowtitle(tr(“Diagram“));
    updateActions();
}

void DiagramWindow::addNode()
{
    Node *node = new Node;
    node->setText(tr(“Node %1“).arg(seqNumber + 1));
    setupNode(node);
}

void DiagramWindow::addlink()
{
    NodePair nodes = selectedNodePair();
    if (nodes == NodePair())
        return;

    link *link = new link(nodes.first nodes.second);
    scene->addItem(link);
}

void DiagramWindow::del()
{
    QList items = scene->selectedItems();
    QMutableListIterator i(items);
    while (i.hasNext())
    {
        link *link = dynamic_castnk *>(i.next());
        if (link)
        {
            delete link;
            i.remove();
        }
    }

    qDeleteAll(items);
}

void DiagramWindow::cut()
{
    Node *node = selectedNode();
    if (!node)
        return;

    copy();
    delete node;
}

void DiagramWindow::copy()
{
    Node *node = selectedNode();
    if (!node)
        return;

    QString str = QString(“Node %1 %2 %3 %4“)
                  .arg(node->textColor().name())
                  .arg(node->outlineColor().name())
                  .arg(node->backgroundColor().name())
                  .arg(node->text());
    QApplication::clipboard()->setText(str);
}

void DiagramWindow::paste()
{
    QString str = QApplication::clipboard()->text();
    QStringList parts = str.split(“ “);

    if (parts.count() >= 5 && parts.first() == “Node“)
    {
        Node *node = new Node;
        node->setText(QStringList(parts.mid(4)).join(“ “));
        node->setTextColor(QColor(parts[1]));
        node->setOutlineColor(QColor(parts[2]));
        node->setBackgroundColor(QColor(parts[3]));
        setupNode(node);
    }
}

void DiagramWindow::bringToFront()
{
    ++maxZ;
    setZValue(maxZ);
}

void DiagramWindow::sendToBack()
{
    --minZ;
    setZValue(minZ);
}

void DiagramWindow::properties()
{
    Node *node = selectedNode();
    link *link = selectedlink();

    if (node)
    {
        PropertiesDialog dialog(node this);
        dialog.exec();
    }
    else if (link)
    {
        QColor color = QColorDialog::getColor(link->color() this);
        if (color.isValid())
    

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1212  2019-10-22 08:25  Diagram\Diagram.pro

     文件      43815  2019-10-30 17:17  Diagram\Diagram.pro.user

     文件       8239  2019-10-21 14:24  Diagram\diagramwindow.cpp

     文件       1254  2008-01-09 08:43  Diagram\diagramwindow.h

     文件        293  2008-01-09 08:43  Diagram\images\bringtofront.png

     文件       1304  2008-01-09 08:43  Diagram\images\colors.png

     文件        485  2008-01-09 08:43  Diagram\images\copy.png

     文件        537  2008-01-09 08:43  Diagram\images\cut.png

     文件        833  2008-01-09 08:43  Diagram\images\delete.png

     文件        208  2008-01-09 08:43  Diagram\images\link.png

     文件        212  2008-01-09 08:43  Diagram\images\node.png

     文件        907  2008-01-09 08:43  Diagram\images\paste.png

     文件        318  2008-01-09 08:43  Diagram\images\sendtoback.png

     文件       1769  2019-10-21 21:19  Diagram\link.cpp

     文件        599  2019-10-21 21:19  Diagram\link.h

     文件        189  2019-10-22 08:23  Diagram\main.cpp

     文件       3249  2019-10-21 14:01  Diagram\node.cpp

     文件       1221  2019-10-21 13:53  Diagram\node.h

     文件       1788  2019-10-21 14:17  Diagram\propertiesdialog.cpp

     文件        686  2019-10-21 14:16  Diagram\propertiesdialog.h

     文件       7977  2019-10-21 14:16  Diagram\propertiesdialog.ui

     文件        353  2008-01-09 08:43  Diagram\resources.qrc

     目录          0  2019-11-03 07:11  Diagram\images

     目录          0  2019-11-03 07:11  Diagram

----------- ---------  ---------- -----  ----

                77448                    24


评论

共有 条评论