(Qt)与添加到场景中的项目失去联系。无法获得职位

时间:2014-07-13 23:18:29

标签: c++ qt view scene

我正在尝试为可编辑的结构表单窗口小部件设置配置窗口小部件,以便用户可以选择“待填充的LineEdits”的位置。

我的想法是通过使用由QGraphicsScene场景,QGraphicsView视图和一些具有正确名称的LineEdits项目引用的小部件来收集LineEdits的所需位置:QTextItems。

我设法将参考项添加到场景中,显示了视图并且能够将项目放在我想要的位置上。问题是一旦项目被添加到场景中,我就失去了与他们的所有联系,我不知道哪个项目在哪个位置。 这是一个小例子:

scene = new QGraphicsScene(myWidgetSize_QRect);
view = new QGraphicsView(scene);
view->setAcceptDrops(true);


for(int i=0, i<number_of_input_fields, i++)
{
    GraphicsTextItem *item=new GraphicsTextItem();
    //Configure Item
    item->setFlags(QGraphicsItem::ItemIsMovable|QGraphicsItem::ItemIsSelectable);
    item->setAcceptedMouseButtons(Qt::LeftButton);
    item->setAcceptDrops(true);
    item->setCursor(Qt::OpenHandCursor);

    QString txt("");

    txt = textForItem(i);//some function that defines the text. 
                         //Suppose it have returned for some items: "Name", "Address"

    item->setPos(20+20*i,20+20*i);//load the items on different positions
    scene->addItem(item);
}


view->show();

嗯,完成了相似的代码后,我不知道如果将位置移动到所需的位置后如何获得这些位置。 如果我在我想要的位置放置了带有“姓名”和“地址”字样的项目,我会更具体,我不知道如何获得“名称”项目的位置。

将项目添加到场景后,我对项目的唯一访问是:

scene->items();

我不知道该列表上的项目是如何订购的。而且不知道怎么知道哪个是......

我很难做到这一点,我一直在推迟这一点,同时专注于其他一些事情......但我已经达到了无法继续编码其他事情的时间,因为这是我程序的一个主要特征

非常感谢任何帮助......谢谢。

0 个答案:

没有答案