要获取创建的不同名称的 QGraphicsRectItem
对象,您可以通过以下方式:
- 使用容器(例如
std::vector
或QList
)来保存创建的QGraphicsRectItem
对象。在每次创建时,将新对象添加到容器中,并分配一个唯一的名称给它。
示例代码:
#include <QGraphicsScene>
#include <QGraphicsRectItem>
#include <QString>
#include <QList>
int main()
{
QGraphicsScene scene;
QList<QGraphicsRectItem*> rectItems;
// 创建多个矩形并添加到场景和列表中
for (int i = 0; i < 5; ++i)
{
QGraphicsRectItem* rect = new QGraphicsRectItem(0, 0, 100, 100);
scene.addItem(rect);
QString itemName = "rect" + QString::number(i); // 分配唯一的名称
rect->setObjectName(itemName);
rectItems.append(rect);
}
// 根据名称查找特定的矩形项
QString searchName = "rect2";
foreach (QGraphicsRectItem* item, rectItems)
{
if (item->objectName() == searchName)
{
// 找到了名为 "rect2" 的矩形项
break;
}
}
return 0;
}
- 在需要访问时,使用场景的
items()
方法迭代所有图形项,并根据其类型和其他属性进行筛选。
示例代码:
#include <QGraphicsScene>
#include <QGraphicsRectItem>
int main()
{
QGraphicsScene scene;
// 创建多个矩形并添加到场景中
for (int i = 0; i < 5; ++i)
{
QGraphicsRectItem* rect = new QGraphicsRectItem(0, 0, 100, 100);
scene.addItem(rect);
QString itemName = "rect" + QString::number(i); // 分配唯一的名称
rect->setObjectName(itemName);
}
// 根据名称查找特定的矩形项
QString searchName = "rect2";
QList<QGraphicsItem*> items = scene.items();
foreach (QGraphicsItem* item, items)
{
if (item->type() == QGraphicsRectItem::Type && item->objectName() == searchName)
{
QGraphicsRectItem* foundRect = dynamic_cast<QGraphicsRectItem*>(item);
// 找到了名为 "rect2" 的矩形项(foundRect)
break;
}
}
return 0;
}
以上示例代码演示了两种常见方法,您可以根据实际需求选择适合您的方式来获取不同名称的 QGraphicsRectItem
对象。
内容由零声教学AI助手提供,问题来源于学员提问