ok, i had tried it with:
dialog.cpp
Here i send the line pointer .
ui(new Ui::Dialog)
{
ui->setupUi(this);
ui->graphicsView->setScene(scene);
// create our object and add it to the scene
ellipse1 = new customItem();
ellipse2 = new customItem();
qDebug() << "ellipse1->scenePos().x(): " << ellipse1->scenePos().x();
ellipse1->setLine(line,false);
ellipse1->setLine(line,true);
scene->addItem(ellipse1);
scene->addItem(ellipse2);
scene->addItem(line);
}
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
// create our object and add it to the scene
ellipse1 = new customItem();
ellipse2 = new customItem();
line = new QGraphicsLineItem(100,100,450,300);
qDebug() << "ellipse1->scenePos().x(): " << ellipse1->scenePos().x();
ellipse1->setLine(line,false);
ellipse1->setLine(line,true);
scene->addItem(ellipse1);
scene->addItem(ellipse2);
scene->addItem(line);
}
To copy to clipboard, switch view to plain text mode
dialog.h
{
Q_OBJECT
public:
explicit Dialog
(QWidget *parent
= 0);
~Dialog();
private:
Ui::Dialog *ui;
customItem *ellipse1;
customItem *ellipse2;
};
#endif // DIALOG_H
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private:
Ui::Dialog *ui;
QGraphicsScene *scene;
customItem *ellipse1;
customItem *ellipse2;
QGraphicsLineItem *line;
};
#endif // DIALOG_H
To copy to clipboard, switch view to plain text mode
customItem.cpp
{
line = newLine;
startOrEnd = side;
}
{
Pressed = false;
update();
if(startOrEnd == false)
{
line->line().setLine(this->scenePos().x(),this->scenePos().y(),
line->line().x2(),line->line().y2() );
}
if(startOrEnd == true)
{
line->line().setLine(line->line().x1(),line->line().y1(),
this->scenePos().x(),this->scenePos().y());
}
qDebug()<<"xPos: " << this->scenePos().x();
qDebug()<<"yPos: " << this->scenePos().y();
}
void customItem::setLine(QGraphicsLineItem* newLine, bool side)
{
line = newLine;
startOrEnd = side;
}
void customItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
Pressed = false;
update();
QGraphicsItem::mouseReleaseEvent(event);
if(startOrEnd == false)
{
line->line().setLine(this->scenePos().x(),this->scenePos().y(),
line->line().x2(),line->line().y2() );
}
if(startOrEnd == true)
{
line->line().setLine(line->line().x1(),line->line().y1(),
this->scenePos().x(),this->scenePos().y());
}
qDebug()<<"xPos: " << this->scenePos().x();
qDebug()<<"yPos: " << this->scenePos().y();
}
To copy to clipboard, switch view to plain text mode
{
public:
customItem();
.....
.....
public:
bool Pressed;
bool startOrEnd;
};
class customItem : public QGraphicsItem
{
public:
customItem();
.....
void setLine(QGraphicsLineItem line, bool side);
.....
public:
bool Pressed;
QGraphicsLineItem *line;
bool startOrEnd;
};
To copy to clipboard, switch view to plain text mode
But it dont work.
Bookmarks