gpt4 book ai didi

c++ - 将图像添加到 QGraphicsScene 中的特定位置

转载 作者:行者123 更新时间:2023-11-28 07:32:00 25 4
gpt4 key购买 nike

我正在开发一个程序,允许用户选择一个文件并将其添加到 QGraphicsView。除项目定位外,esle 一切正常。所有图像都显示在相同的位置。源码如下

//user action to add an image
void MainWindow::on_actionMessage_triggered()
{
const int width = 150;
const int height = 200;

QString fileName = QFileDialog::getOpenFileName(this,"Open Image File",QDir::currentPath());

QImage image(fileName);
QGraphicsPixmapItem* item = new QGraphicsPixmapItem(QPixmap::fromImage(image));
item->setScale(0.1);
item->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
item->setPos(scene->items.count()*width,scene->items.count()*height);
scene->addItem(item);
}


//initialize Scene
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setBaseSize(800, 600);

scene = new QGraphicsScene(0,0,600,400);
scene->setSceneRect(0,0,600,400);

ui->graphicsView->setScene(scene);
//ui->graphicsView->fitInView(scene.sceneRect());
ui->graphicsView->show();
}

最佳答案

在使用 QGraphicsSystem 时,您需要考虑在设置和检索项目位置时影响的是哪个坐标系。

在这个项目没有父项的情况下,虽然 Qt 文档声明没有父项它将设置项目的场景坐标,但它需要了解场景才能像您期望的那样执行此操作。

因此,在调用setPos之前将item添加到场景中。

关于c++ - 将图像添加到 QGraphicsScene 中的特定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17480662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com