gpt4 book ai didi

c++ - 如何将信号附加到 qPixmap?

转载 作者:行者123 更新时间:2023-11-28 08:16:15 27 4
gpt4 key购买 nike

我正在使用 C++ Qt 创建一个应用程序,我想加载多个图像。我想为每个图像附加一个信号,以便我可以在之后启用或禁用它们。

有什么帮助吗?

编辑 1:

imageDlg = new QFileDialog();
imageList = imageDlg->getOpenFileNames(this,
tr("Open Document"),
QDir::currentPath(),
tr("Image Files (*.png *.jpg);;All files (*.*)"));


QString imageName;
int x = -50;
int y = -50;
int n = 1;
double size = imageList.size();

if(imageList.isEmpty())
return;

scene->clear();
setCursor(Qt::WaitCursor);


foreach(imageName,imageList)
{
double val = (n/size)*100;
ui->progressBar->setValue((int)val);


image.load(imageName,"4",Qt::AutoColor);

image = image.scaled(100,100,Qt::KeepAspectRatio,Qt::FastTransformation);
imageNames.push_back(imageName.toStdString());

// scene->setSceneRect(x,y,100,100);
item = scene->addPixmap(image);
item->setPos(x,y);
x = x + 110;

if(n%4 == 0)
{
x = -50;
y = y + 90;
}

n++;
}

//ui->label_2->setText(strcat("10","image(s) loaded successfully"));
setCursor(Qt::ArrowCursor);
ui->imageGraphicsView->setScene(scene);

最佳答案

您应该存储 QGraphicsPixmapItem*您返回的指针:

scene->addPixmap();

(使用例如 QList<QGraphicsPixmapItem*> 或您选择的其他容器。)

这些是显示在场景中的对象。您可以通过这些指针更改它们的外观、显示或隐藏它们、更改它们的不透明度等。

查看 QGraphicsItem 的文档有关如何操作这些项目的详细信息。

QGraphicsItem不继承自 QObject ,它没有信号或槽(从它派生的类也没有)。如果您想处理鼠标事件,您需要创建一个自定义图形项(例如从 QGraphicsPixmapItem 派生)并重新实现您感兴趣的事件处理函数。

查看Elastic Nodes示例以获取有关如何处理图形项目的鼠标事件的示例。

关于c++ - 如何将信号附加到 qPixmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7659672/

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