我正在使用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/