获取坐标QGraphicsLineItem?

时间:2016-05-23 18:17:33

标签: c++ qt

我无法获取另一个类中对象的坐标。

我换了几行。

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();
        }
    }
....
}

0 个答案:

没有答案