我需要在行和列的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);
如果我正常运行程序,则不会显示任何错误消息,但窗口甚至不会出现。如果我在调试模式下运行项目,我只能看到错误消息。
&#34;下级停止了因为它收到了来自操作系统的信息&#34;
信号名称:SIGSEGV
信号含义:分段错误
我已经尝试了一切,但似乎没有任何效果。
答案 0 :(得分:0)
您创建一个二维指针数组。您需要实际使每个元素指向一个真实对象。这就是你得到段错误的原因。