2011-11-25 152 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);