#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include 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 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; }