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

10-12 12:42
查看更多