#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;
}