如何在Qt中创建2维QGraphicsRectItems数组?

时间:2017-08-11 03:40:25

标签: c++ arrays qt graphics instance

我需要在行和列的QGraphicsView中显示动态数量的QGraphicsRectItems,所以我决定创建一个2D数组,但我总是得到一个错误。这是我的标题:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QGraphicsRectItem>
#include <QMainWindow>
#include <QGraphicsScene>

namespace Ui{
    class MainWindow;
}

class MainWindow : public QMainWindow{
    Q_OBJECT        

    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();

    private:
        Ui::MainWindow *ui;
        QGraphicsRectItem*** objRect; //This would be my 2D array
};

#endif // MAINWINDOW_H

这就是我实例的方式:

    objRect = new QGraphicsRectItem**[x];
    for(int i = 0; i < x; i++){
        objRect[i] = new QGraphicsRectItem*[x];
    }

上面的代码运行完美,没有错误。但每当我尝试用它做一些事情,比如确定其中一个矩形的大小时,它会抛出一条错误信息:

    objRect[0][0]->setRect(0,0,100,100);             

如果我正常运行程序,则不会显示任何错误消息,但窗口甚至不会出现。如果我在调试模式下运行项目,我只能看到错误消息。

This is the error message:

&#34;下级停止了因为它收到了来自操作系统的信息&#34;

信号名称:SIGSEGV

信号含义:分段错误

我已经尝试了一切,但似乎没有任何效果。

1 个答案:

答案 0 :(得分:0)

您创建一个二维指针数组。您需要实际使每个元素指向一个真实对象。这就是你得到段错误的原因。