Question

Having an issue with displaying a loaded image in a QGraphicsScene.

CTextBox::CTextBox(QWidget* parent /* = NULL */)
{   
QPixmap image;

image.load("basketball.png");

grid = new QGridLayout();
grid->setSpacing(1);    
textBrowser = new QTextEdit(this);
treeView = new QTreeView;

treeLabel = new QLabel;
treeLabel->setText("Tree View:");

debugLabel = new  QLabel;
debugLabel->setText("Debug:");  

standardModel = new QStandardItemModel;
rootNode = standardModel->invisibleRootItem();
treeView->setModel(standardModel);



QGraphicsPixmapItem pixmapitem(image);




//scene.addText("Graphics");
scene.addItem(&pixmapitem);

//rect = scene.addRect(QRectF(0,0, 100, 100));

//QGraphicsItem *item = scene.itemAt(50, 50);
widget = new QWidget();
view = new QGraphicsView;
view->setScene(&scene);
view->setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));




//proxy = scene.addWidget(widget);
//label = new QLabel();

grid->addWidget(textBrowser, 1, 0);
grid->addWidget(debugLabel, 0, 0);
grid->addWidget(treeView, 1, 1);
grid->addWidget(treeLabel, 0, 1);
//grid->addWidget(&image, 2,0);
//grid->addWidget(view, 2, 0);
//grid->addWidget(widget, 2, 0);
//grid->addWidget(proxy, 2,0);

view->show();

//widget->setLayout(view);

//widget->show();
setLayout(grid);


//label->addItem()
}

Basically when I try and load the image in a QGraphicsScene it seems to scale up to the size of the image but displays a white screen. I can add text to the graphics scene fine and that will display correctly. Now if I try to do add the image into a label on a different widget it displays fine. Any ideas why?

Cheers.

Was it helpful?

Solution

You don't see it because you pass a reference to a local object of the constructor. The pixmap item will be destructed immediately after your constructor ends. Use dynamic allocation instead.

QGraphicsPixmapItem* pixmapitem = new QGraphicsPixmapItem(image);
scene.addItem(pixmapitem);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top