亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? diagramview.cpp

?? 這個是QT3C++編程書(齊亮翻譯)里5,6章的代碼
?? CPP
字號:
#include <qaction.h>#include <qapplication.h>#include <qclipboard.h>#include <qinputdialog.h>#include <qpainter.h>#include <qpopupmenu.h>#include <algorithm>using namespace std;#include "diagramview.h"#include "propertiesdialog.h"DiagramView::DiagramView(QCanvas *canvas, QWidget *parent,                         const char *name)    : QCanvasView(canvas, parent, name){    pendingItem = 0;    activeItem = 0;    minZ = 0;    maxZ = 0;    createActions();}void DiagramView::createActions(){    cutAct = new QAction(tr("Cu&t"), tr("Ctrl+X"), this);    cutAct->setIconSet(QPixmap::fromMimeSource("cut.png"));    connect(cutAct, SIGNAL(activated()), this, SLOT(cut()));    copyAct = new QAction(tr("&Copy"), tr("Ctrl+C"), this);    copyAct->setIconSet(QPixmap::fromMimeSource("copy.png"));    connect(copyAct, SIGNAL(activated()), this, SLOT(copy()));    pasteAct = new QAction(tr("&Paste"), tr("Ctrl+V"), this);    pasteAct->setIconSet(QPixmap::fromMimeSource("paste.png"));    connect(pasteAct, SIGNAL(activated()), this, SLOT(paste()));    deleteAct = new QAction(tr("&Delete"), tr("Del"), this);    deleteAct->setIconSet(QPixmap::fromMimeSource("delete.png"));    connect(deleteAct, SIGNAL(activated()), this, SLOT(del()));    propertiesAct = new QAction(tr("&Properties..."), 0, this);    connect(propertiesAct, SIGNAL(activated()),            this, SLOT(properties()));    addBoxAct = new QAction(tr("Add &Box"), 0, this);    addBoxAct->setIconSet(QPixmap::fromMimeSource("box.png"));    connect(addBoxAct, SIGNAL(activated()), this, SLOT(addBox()));    addLineAct = new QAction(tr("Add &Line"), 0, this);    addLineAct->setIconSet(QPixmap::fromMimeSource("line.png"));    connect(addLineAct, SIGNAL(activated()), this, SLOT(addLine()));    bringToFrontAct = new QAction(tr("Bring to &Front"), 0, this);    bringToFrontAct->setIconSet(            QPixmap::fromMimeSource("bringtofront.png"));    connect(bringToFrontAct, SIGNAL(activated()),            this, SLOT(bringToFront()));    sendToBackAct = new QAction(tr("Send to &Back"), 0, this);    sendToBackAct->setIconSet(            QPixmap::fromMimeSource("sendtoback.png"));    connect(sendToBackAct, SIGNAL(activated()),            this, SLOT(sendToBack()));}void DiagramView::contentsContextMenuEvent(QContextMenuEvent *event){    QPopupMenu contextMenu(this);    if (activeItem) {        cutAct->addTo(&contextMenu);        copyAct->addTo(&contextMenu);        deleteAct->addTo(&contextMenu);        contextMenu.insertSeparator();        bringToFrontAct->addTo(&contextMenu);        sendToBackAct->addTo(&contextMenu);        contextMenu.insertSeparator();        propertiesAct->addTo(&contextMenu);    } else {        pasteAct->addTo(&contextMenu);        contextMenu.insertSeparator();        addBoxAct->addTo(&contextMenu);        addLineAct->addTo(&contextMenu);    }    contextMenu.exec(event->globalPos());}void DiagramView::addBox(){    addItem(new DiagramBox(canvas()));}void DiagramView::addLine(){    addItem(new DiagramLine(canvas()));}void DiagramView::addItem(QCanvasItem *item){    delete pendingItem;    pendingItem = item;    setActiveItem(0);    setCursor(crossCursor);}void DiagramView::contentsMousePressEvent(QMouseEvent *event){    if (event->button() == LeftButton && pendingItem) {        pendingItem->move(event->pos().x(), event->pos().y());        showNewItem(pendingItem);        pendingItem = 0;        unsetCursor();    } else {        QCanvasItemList items = canvas()->collisions(event->pos());        if (items.empty())            setActiveItem(0);        else            setActiveItem(*items.begin());    }    lastPos = event->pos();}void DiagramView::contentsMouseMoveEvent(QMouseEvent *event){    if (event->state() & LeftButton) {        if (activeItem) {            activeItem->moveBy(event->pos().x() - lastPos.x(),                               event->pos().y() - lastPos.y());            lastPos = event->pos();            canvas()->update();        }    }}void DiagramView::contentsMouseDoubleClickEvent(QMouseEvent *event){    if (event->button() == LeftButton && activeItem            && activeItem->rtti() == DiagramBox::RTTI) {        DiagramBox *box = (DiagramBox *)activeItem;        bool ok;        QString newText = QInputDialog::getText(                tr("Diagram"), tr("Enter new text:"),                QLineEdit::Normal, box->text(), &ok, this);        if (ok) {            box->setText(newText);            canvas()->update();        }    }}void DiagramView::bringToFront(){    if (activeItem) {        ++maxZ;        activeItem->setZ(maxZ);        canvas()->update();    }}void DiagramView::sendToBack(){    if (activeItem) {        --minZ;        activeItem->setZ(minZ);        canvas()->update();    }}void DiagramView::cut(){    copy();    del();}void DiagramView::copy(){    if (activeItem) {        QString str;        if (activeItem->rtti() == DiagramBox::RTTI) {            DiagramBox *box = (DiagramBox *)activeItem;            str = QString("DiagramBox %1 %2 %3 %4 %5")                  .arg(box->width())                  .arg(box->height())                  .arg(box->pen().color().name())                  .arg(box->brush().color().name())                  .arg(box->text());        } else if (activeItem->rtti() == DiagramLine::RTTI) {            DiagramLine *line = (DiagramLine *)activeItem;            QPoint delta = line->endPoint() - line->startPoint();            str = QString("DiagramLine %1 %2 %3")                  .arg(delta.x())                  .arg(delta.y())                  .arg(line->pen().color().name());        }        QApplication::clipboard()->setText(str);    }}void DiagramView::paste(){    QString str = QApplication::clipboard()->text();    QTextIStream in(&str);    QString tag;    in >> tag;    if (tag == "DiagramBox") {        int width;        int height;        QString lineColor;        QString fillColor;        QString text;        in >> width >> height >> lineColor >> fillColor;        text = in.read();        DiagramBox *box = new DiagramBox(canvas());        box->move(20, 20);        box->setSize(width, height);        box->setText(text);        box->setPen(QColor(lineColor));        box->setBrush(QColor(fillColor));        showNewItem(box);    } else if (tag == "DiagramLine") {        int deltaX;        int deltaY;        QString lineColor;        in >> deltaX >> deltaY >> lineColor;        DiagramLine *line = new DiagramLine(canvas());        line->move(20, 20);        line->setPoints(0, 0, deltaX, deltaY);        line->setPen(QColor(lineColor));        showNewItem(line);    }}void DiagramView::del(){    if (activeItem) {        QCanvasItem *item = activeItem;        setActiveItem(0);        delete item;        canvas()->update();    }}void DiagramView::properties(){    if (activeItem) {        PropertiesDialog dialog;        dialog.exec(activeItem);    }}void DiagramView::showNewItem(QCanvasItem *item){    setActiveItem(item);    bringToFront();    item->show();    canvas()->update();}void DiagramView::setActiveItem(QCanvasItem *item){    if (item != activeItem) {        if (activeItem)            activeItem->setActive(false);        activeItem = item;        if (activeItem)            activeItem->setActive(true);        canvas()->update();    }}const int Margin = 2;void drawActiveHandle(QPainter &painter, const QPoint &center){    painter.setPen(Qt::black);    painter.setBrush(Qt::gray);    painter.drawRect(center.x() - Margin, center.y() - Margin,                     2 * Margin + 1, 2 * Margin + 1);}DiagramBox::DiagramBox(QCanvas *canvas)    : QCanvasRectangle(canvas){    setSize(100, 60);    setPen(black);    setBrush(white);    str = "Text";}DiagramBox::~DiagramBox(){    hide();}void DiagramBox::setText(const QString &newText){    str = newText;    update();}void DiagramBox::drawShape(QPainter &painter){    QCanvasRectangle::drawShape(painter);    painter.drawText(rect(), AlignCenter, text());    if (isActive()) {        drawActiveHandle(painter, rect().topLeft());        drawActiveHandle(painter, rect().topRight());        drawActiveHandle(painter, rect().bottomLeft());        drawActiveHandle(painter, rect().bottomRight());    }}QRect DiagramBox::boundingRect() const{    return QRect((int)x() - Margin, (int)y() - Margin,                 width() + 2 * Margin, height() + 2 * Margin);}DiagramLine::DiagramLine(QCanvas *canvas)    : QCanvasLine(canvas){    setPoints(0, 0, 0, 99);}DiagramLine::~DiagramLine(){    hide();}void DiagramLine::drawShape(QPainter &painter){    QCanvasLine::drawShape(painter);    if (isActive()) {        drawActiveHandle(painter, startPoint() + offset());        drawActiveHandle(painter, endPoint() + offset());    }}QPointArray DiagramLine::areaPoints() const{    const int Extra = Margin + 1;    QPointArray points(6);    QPoint pointA = startPoint() + offset();    QPoint pointB = endPoint() + offset();    if (pointA.x() > pointB.x())        swap(pointA, pointB);    points[0] = pointA + QPoint(-Extra, -Extra);    points[1] = pointA + QPoint(-Extra, +Extra);    points[3] = pointB + QPoint(+Extra, +Extra);    points[4] = pointB + QPoint(+Extra, -Extra);    if (pointA.y() > pointB.y()) {        points[2] = pointA + QPoint(+Extra, +Extra);        points[5] = pointB + QPoint(-Extra, -Extra);    } else {        points[2] = pointB + QPoint(-Extra, +Extra);        points[5] = pointA + QPoint(+Extra, -Extra);    }    return points;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲在线成人精品| 18成人在线观看| 国内久久婷婷综合| 亚洲精品在线免费观看视频| 精品在线播放午夜| 久久久一区二区三区| 成人av在线资源网站| 亚洲综合网站在线观看| 欧美日韩免费电影| 精品一区二区国语对白| 亚洲国产高清在线| 欧美日韩综合在线| 蜜桃av噜噜一区| 国产欧美久久久精品影院| 99re8在线精品视频免费播放| 夜夜嗨av一区二区三区网页 | 青娱乐精品视频在线| 日韩一二三区不卡| 成人aaaa免费全部观看| 午夜激情一区二区三区| 久久久综合视频| 在线观看亚洲a| 精油按摩中文字幕久久| 中文字幕亚洲一区二区va在线| 欧美日韩综合在线免费观看| 极品销魂美女一区二区三区| 成人免费一区二区三区在线观看| 欧美日韩黄视频| 国产精品乡下勾搭老头1| **欧美大码日韩| 日韩一区国产二区欧美三区| 91丝袜国产在线播放| 精品午夜一区二区三区在线观看| 中文字幕一区二区日韩精品绯色| 欧美一区三区四区| 一本大道综合伊人精品热热 | 久久久99久久精品欧美| 欧美中文字幕不卡| 岛国精品在线观看| 精品一区二区三区视频在线观看 | 国产精品污www在线观看| 欧美视频在线一区二区三区| 国产精品一区二区久激情瑜伽| 亚洲一区二区不卡免费| 中文一区一区三区高中清不卡| 91精品国产一区二区三区| 91性感美女视频| 国产精品资源网| 日韩精品电影在线观看| 亚洲激情自拍视频| 中文字幕中文在线不卡住| 2022国产精品视频| 91精品国产欧美一区二区| 日本精品视频一区二区三区| 成人三级在线视频| 国产精品1024| 韩国三级在线一区| 久久精品av麻豆的观看方式| 日韩激情av在线| 午夜激情一区二区三区| 亚洲一区视频在线观看视频| 《视频一区视频二区| 国产精品色噜噜| 久久久国产午夜精品| 精品免费国产二区三区| 制服.丝袜.亚洲.中文.综合| 欧美日韩激情一区二区三区| 欧美午夜在线一二页| 色综合激情五月| 色婷婷久久99综合精品jk白丝| 91在线你懂得| 色综合 综合色| 色就色 综合激情| 欧美伊人久久久久久久久影院| 91在线观看美女| 在线观看成人小视频| 97精品视频在线观看自产线路二| 99精品视频在线观看免费| 97精品超碰一区二区三区| fc2成人免费人成在线观看播放| 成人午夜av电影| 色域天天综合网| 欧美日本韩国一区| 日韩欧美www| 久久精品网站免费观看| 国产欧美日韩在线| 国产精品美女久久久久aⅴ| 亚洲欧洲性图库| 亚洲午夜电影网| 蜜臀av亚洲一区中文字幕| 国产一区二区三区四区五区美女 | 亚洲人吸女人奶水| 亚洲精品一卡二卡| 日韩精品成人一区二区在线| 激情小说亚洲一区| 成人性生交大片免费看中文网站| 成人av小说网| 欧美精品色综合| 日韩欧美一区二区不卡| 国产欧美日韩在线观看| 一区二区三区精品在线观看| 亚洲成a人片在线不卡一二三区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 中文幕一区二区三区久久蜜桃| 日韩美女视频一区| 午夜电影一区二区三区| 国产在线视视频有精品| 色综合久久久久| 欧美成人精品1314www| 亚洲婷婷国产精品电影人久久| 亚洲国产精品精华液网站| 国内一区二区视频| 在线观看视频一区二区欧美日韩| 日韩欧美一区二区免费| 日韩一区在线播放| 毛片av一区二区| 91视频com| 久久女同互慰一区二区三区| 一区二区不卡在线播放| 国产精品白丝jk黑袜喷水| 在线免费亚洲电影| 精品国产欧美一区二区| 亚洲欧美日韩国产中文在线| 黄色资源网久久资源365| 在线日韩国产精品| 国产欧美一区二区三区网站| 日韩国产高清影视| 91蜜桃在线观看| 久久免费电影网| 日韩二区在线观看| 91丨九色丨黑人外教| 久久久国产午夜精品| 日韩激情av在线| 色老头久久综合| 国产精品久久久久久户外露出| 免费在线观看不卡| 欧美四级电影网| 亚洲美女视频一区| 成人免费毛片app| 亚洲精品在线一区二区| 日本欧美大码aⅴ在线播放| 在线精品视频小说1| 国产精品理论片| 国产成人免费高清| xf在线a精品一区二区视频网站| 午夜精品久久久久久久久| 99久久精品久久久久久清纯| 国产视频在线观看一区二区三区 | 国产精品久久久久久亚洲伦 | 日日摸夜夜添夜夜添精品视频| 91在线播放网址| 国产精品污网站| 国产v综合v亚洲欧| 精品国精品国产尤物美女| 日韩国产成人精品| 91精品久久久久久蜜臀| 午夜精品久久久久影视| 欧美综合一区二区三区| 樱花影视一区二区| 91国产福利在线| 亚洲一级片在线观看| 在线免费观看成人短视频| 亚洲黄色免费网站| 91成人在线免费观看| 亚洲一区二区三区精品在线| 欧美性生活大片视频| 夜夜精品视频一区二区| 欧美日韩一区久久| 日韩不卡一区二区三区 | 在线观看一区二区视频| 一区二区三区在线观看欧美 | 麻豆一区二区三区| 欧美一区二区三区在线观看视频| 亚洲成a人片综合在线| 91精品国产一区二区三区| 美女mm1313爽爽久久久蜜臀| 欧美精品一区二区三区视频| 激情文学综合网| 欧美国产禁国产网站cc| 91丨porny丨户外露出| 一区二区三区日韩欧美精品| 欧美人体做爰大胆视频| 美国av一区二区| 国产欧美精品一区二区色综合| 粉嫩av一区二区三区在线播放| 国产精品入口麻豆九色| 91亚洲精品乱码久久久久久蜜桃| 日韩一区在线看| 欧美人牲a欧美精品| 精品亚洲国产成人av制服丝袜| 久久蜜臀精品av| 91黄色免费网站| 免费的成人av| 国产精品丝袜91| 欧美性猛交xxxx乱大交退制版 | 欧美美女一区二区三区| 国产在线播精品第三| 中文字幕在线观看一区二区| 欧美美女一区二区三区| 高清视频一区二区|