Отображение изображения с QGraphics Scene - PullRequest
1 голос
/ 25 ноября 2011

Возникают проблемы с отображением загруженного изображения в 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()
}

В основном, когда я пытаюсь загрузить изображение в QGraphicsScene, оно кажется масштабируемым до размера изображения, но отображает белыйэкран.Я могу добавить текст в графическую сцену нормально, и это будет отображаться правильно.Теперь, если я попытаюсь добавить изображение в метку на другом виджете, оно будет отображаться нормально.Есть идеи почему?

Приветствия.

1 Ответ

4 голосов
/ 25 ноября 2011

Вы не видите его, потому что передаете ссылку на локальный объект конструктора. Элемент растрового изображения будет уничтожен сразу после окончания работы вашего конструктора. Вместо этого используйте динамическое распределение.

QGraphicsPixmapItem* pixmapitem = new QGraphicsPixmapItem(image);
scene.addItem(pixmapitem);
...