Qt:setScreenRect = segfault

时间:2016-04-12 16:23:19

标签: c++ qt

基本上我需要画一些东西, 这对设计人员来说很简单(例如从QWidget继承并覆盖paintEvent需要在Qt设计器中使用它)。

所以我将QGraphicsView添加到.ui文件并用按钮方法编写这样的代码:

QGraphicsScene *scene = ui->graphicsView->scene();    
const QRectF scene_r = ui->graphicsView->sceneRect();
//here I see that scene_r == {0, 0, 0, 0};

然后我添加了这样的代码:

const QSize draw_size = ui->graphicsView->size();
//draw_size == {100, 100}
scene->setSceneRect(QRectF(0, 0, draw_size.width(), draw_size.height()));

并在第scene->setSceneRect行上发生了段错误?

其实我想要这样的代码:

//scene size == draw_size
QPixmap pix(draw_size.width(), draw_size.height());
//fill pix with external program
scene->addPixmap(map_pix);

有可能吗?

我从未使用过QGraphicsView。

1 个答案:

答案 0 :(得分:1)

你得到段错误的原因是你没有为视图设置任何场景,因此scene()将返回一个空指针。

QGraphicsScene scene;
QGraphicsView view(&scene);
view.show();

替代方法是创建没有场景的视图,然后再添加它:

void    setScene(QGraphicsScene *scene)

参考: http://doc.qt.io/qt-5/qgraphicsview.html