基本上我需要画一些东西, 这对设计人员来说很简单(例如从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。
答案 0 :(得分:1)
你得到段错误的原因是你没有为视图设置任何场景,因此scene()将返回一个空指针。
QGraphicsScene scene;
QGraphicsView view(&scene);
view.show();
替代方法是创建没有场景的视图,然后再添加它:
void setScene(QGraphicsScene *scene)