作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我是一名优秀的程序员,十分优秀!