コード例 #1
0
application::application(char* n) : name(0)
{
  giveName(n);
}
コード例 #2
0
ファイル: views.cpp プロジェクト: mortang2410/rtree
void RectScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
    QPointF pos = event->scenePos();
    MyRect * item = dynamic_cast<MyRect *>(itemAt(pos,QTransform()));
    switch (mode)
    {
    case Add:
        {
            buffer.push_back(pos);

            if (buffer.size() == 2)
            {
                MyRect * newrect = new MyRect(buffer[0],buffer[1]);
                addItem(newrect);
                buffer.clear();
                newrect->label = giveName(namePool++);
                auto x = new QGraphicsTextItem(newrect->label,newrect);
                x->setPos(newrect->rect().center());
                treescene->tree->insert(newrect->entry);
                update();
                treescene->drawTree();
            }

        }
        break;
    case Remove:
        {
            if (item)
            {
                removeItem(item);
                treescene->tree->deleteEntry(item->entry);
                delete item;
                update();
                treescene->drawTree();

            }
        }
        break;
    case Search:
        {
            if (!insearch)
            {
                insearch = true;
                buffer.push_back(pos);
            }
            else
            {
                insearch = false;
                QRectF rect(pos,buffer[0]);
                searchBuf.push_back(new QGraphicsRectItem(rect));
                addItem(searchBuf.back());
                deque<LeafEntry*> x = treescene->tree->searchOverlap(to2D(rect));
                MyRect * rectpt;
                int n = x.size();                
                for (int i = 0; i<n; ++i)
                {

                    rectpt =(MyRect*) x[i]->data;
                    rectpt->setSelected(true);
                }
                buffer.clear();

            }
        }
        break;
    }
}