#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QTreeWidget>
#include <QGraphicsRectItem>
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
private:
    Ui::MainWindow *ui;
    void init ();
    void list ();
    void list (QTreeWidgetItem *branch, QGraphicsItem *container);
    QTreeWidgetItem *createNode(QGraphicsItem *item);
};
 
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QGraphicsRectItem>
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    init ();
    list ();
}
 
void MainWindow::init()
{
    QGraphicsScene * scene = new QGraphicsScene;
    ui->view->setScene (scene);
    scene->addLine (10, 10, 200, 100, QPen ("red"));
 
    QGraphicsRectItem * r = new QGraphicsRectItem;
    r->setPen (QPen ("blue"));
    r->setBrush(QBrush ("yellow"));
    r->setRect (20, 20, 100, 80);
    r->setRotation (30);
    r->setFlags (QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
    r->setToolTip ("obdelnik");
    scene->addItem (r);
 
    for (int i = 0; i <= 1; i ++)
    {
        QGraphicsEllipseItem * e = new QGraphicsEllipseItem;
        e->setPen (QPen ("red"));
        e->setBrush(QBrush ("lime"));
        e->setRect (40 + i*40, 40, 32, 32);
        e->setFlags (QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
        e->setToolTip ("kruh " + QString::number(i+1));
        e->setParentItem (r);
    }
}
 
QTreeWidgetItem * MainWindow::createNode (QGraphicsItem * item)
{
    QTreeWidgetItem * node = new QTreeWidgetItem;
    node->setText (0, "item: " + item->toolTip());
    list (node, item);
    return node;
}
 
void MainWindow::list()
{
    QGraphicsScene * scene = ui->view->scene();
    QList < QGraphicsItem * > items = scene->items();
    // auto items = scene->items();
    // foreach (QGraphicsItem * item, items)
    for (QGraphicsItem * item : items)
    {
       if (item->parentItem() == NULL)
       {
          QTreeWidgetItem * node = createNode (item);
          ui->tree->addTopLevelItem (node);
       }
    }
}
 
void MainWindow::list (QTreeWidgetItem * branch, QGraphicsItem * container)
{
    QList < QGraphicsItem * > items = container->childItems();
    for (QGraphicsItem * item : items)
    {
       QTreeWidgetItem * node = createNode (item);
       branch->addChild (node);
    }
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
qgraphics.txt · Last modified: 2016/11/04 11:09 by 147.32.6.116
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki