我正在尝试为可编辑的结构表单窗口小部件设置配置窗口小部件,以便用户可以选择“待填充的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();
我不知道该列表上的项目是如何订购的。而且不知道怎么知道哪个是......
我很难做到这一点,我一直在推迟这一点,同时专注于其他一些事情......但我已经达到了无法继续编码其他事情的时间,因为这是我程序的一个主要特征
非常感谢任何帮助......谢谢。