使用QGraphics Scene显示图像

Displaying an image with QGraphics Scene

本文关键字:显示图 图像 显示 Scene QGraphics 使用      更新时间:2023-10-16

在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中加载图像时,它似乎缩放到图像的大小,但显示白色屏幕。我可以将文本添加到图形场景中,这将正确显示。现在,如果我尝试将图像添加到另一个小部件上的标签中,它会显示良好。知道为什么吗?

欢呼。

看不到它,因为您传递了对构造函数的局部对象的引用。在构造函数结束后,pixmap项将立即被销毁。请使用动态分配。

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