QT开发中文网

获取我创建的不同名称的graphicsRectitem

要获取创建的不同名称的 QGraphicsRectItem 对象,您可以通过以下方式:

  1. 使用容器(例如 std::vectorQList)来保存创建的 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;
}
  1. 在需要访问时,使用场景的 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助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=5867

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?