2011-11-25 155 views
1

在QGraphicsScene中显示加载的图像有问题。用QGraphics场景显示图像场景

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似乎扩展到图像的大小,但是显示白色画面。我可以将文字添加到图形场景中,并且可以正确显示。现在,如果我尝试将图像添加到其他小部件上的标签上,它会显示正常。任何想法为什么?

干杯。

+0

我曾经试过Qt,并被困在显示图像超过一天。我最终检查图像是否为null(例如,if(image.isNull()),或者它是否在屏幕上(z值),或者我的画家是否活动(我使用QPainter)。事情起作用了,但我不记得是哪一个,如果没有其他作用,我推荐采用相同的方法。 –

回答

4

您不会看到它,因为您将引用传递给构造函数的本地对象。像素图项目将在您的构造函数结束后立即被破坏。改用动态分配。

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