Qt 使用循环声明成员名称

Qt declaring member names using a loop

我需要在 Qt 中处理 512 个单独的矩形项,我正在 QGraphicsScene 中实现这些项。我真的不想手动声明所有 512 个元素,除非我真的必须这样做。目前我有类似的东西:

QGraphicsRectItem *rec1;
QGraphicsRectItem *rec2;
QGraphicsRectItem *rec3;
QGraphicsRectItem *rec4;
QGraphicsRectItem *rec5;
QGraphicsRectItem *rec6;
QGraphicsRectItem *rec7;
QGraphicsRectItem *rec8;
QGraphicsRectItem *rec9;
QGraphicsRectItem *rec10;
QGraphicsRectItem *rec11;
QGraphicsRectItem *rec12;

等等等等。这将不得不上升到 rec512。

我已经尝试实现一个 for 循环来为我做这件事:

   for(int i = 1;i=512;i++){
        QGraphicsRectItem *rec[i];
    }

但是我收到一条错误消息 'expected member name or ; after declaration specifiers'

我想在这里实现循环是不可能的,有没有其他方法可以轻松声明所有 512 项?

谢谢:)

感谢 Benjamin Lindley 指出数组的明显用途,这让我完全忘记了。

    QGraphicsRectItem *rec[512];

更好的方法:

// in some .cpp file
#include <QVector>
#include <QSharedPointer>
#include <QDebug>

// Suppose we have some Test class with constructor, destructor and some methods
class Test
{
public:
    Test()
    {
        qDebug() << "Creation";
    }

    ~Test()
    {
        qDebug() << "Destruction";
    }

    void doStuff()
    {
        qDebug() << "Do stuff";
    }
};

void example()
{
    // create container with 4 empty shared poiters to Test objects
    QVector< QSharedPointer<Test> > items(4);

    // create shared poiters to Test objects
    for ( int i = 0; i < items.size(); ++i )
    {
        items[i] = QSharedPointer<Test>(new Test());
    }

    // do some stuff with objects
    for ( int i = 0; i < items.size(); ++i )
    {
        items.at(i)->doStuff();
    }

    // all Test objects will be automatically removed here (thanks to QSharedPointer)
}

在您的项目中,您应该将 Test 替换为 QGraphicsRectItem(或其他一些 class)并调用适当的函数。祝你好运!