我无法获取另一个类中对象的坐标。
我换了几行。
cisimEkle.cpp
void cisimEkle::cizgileriCiz(int x1, int x2, int y1, int y2)
{
QPen kalem(Qt::black);
kalem.setStyle(Qt::SolidLine);
kalem.setWidth(1);
QLine cizgi1Koordinati(x1,0,x1,y1);
QLine cizgi2Koordinati(x2,0,x2,y2);
QLine cizgi3Koordinati(x1,y1,x2,y2);
cizgi1 = gsCisim->addLine(cizgi1Koordinati,kalem);
cizgi2 = gsCisim->addLine(cizgi2Koordinati,kalem);
cizgi3 = gsCisim->addLine(cizgi3Koordinati,kalem);
qDebug() << cizgi2->line().p1();//QPointF(100,0)
....
}
old mainwindow.cpp
void MainWindow::on_btnEkle_clicked()
{
int index = ui->cmbCisimler->currentIndex();
QList<QGraphicsItem*> list = cisimListesi.at(index)->childItems();
QGraphicsLineItem gl;
foreach (QGraphicsItem* item, list) {
gsKiris->addItem(item);
switch (item->type()) {
case 6:
gl.setParentItem(item->parentItem()); //item is from cisimEkle.cpp
qDebug() << "Çizgi(6)";
qDebug() << "p1:"<< gl.line().p1();////QPointF(0,0)
break;
...
}
但是当我查看调试模式时:
我该如何解决这个问题?
答案: 新的mainwindow.cpp
void MainWindow::on_btnEkle_clicked()
{
int index = ui->cmbCisimler->currentIndex();
QList<QGraphicsItem*> list = cisimListesi.at(index)->childItems();
for (int i = 0; i < list.size(); ++i) {
gsKiris->addItem(list.at(i));
if (list.at(i)->type() == 6) {
QGraphicsLineItem* gl = dynamic_cast<QGraphicsLineItem*>(list.at(i)); // QGraphicsLineItem to QGraphicsItem
qDebug() << "p1:"<< gl->line().p1();
}
}
....
}