如何从模型/视图中获取QImage POINTER

时间:2018-01-11 14:06:29

标签: c++ qt qimage

如何获取存储在模型中的QImage *?

这是我的图像管理器存储图像的地方:

QImage * tmpImage = new QImage(sFileNames.at(i));

//Add image to the model view
QStandardItem *item = new QStandardItem();            
item->setData(*tmpImage, Qt::DecorationRole);
ImageModel->appendRow(item);   

现在在另一个类中,我想访问视图中的选择并获取指针。这就是我到目前为止所拥有的:

void NodeEditor::on_set_input_image_clicked()
{
    QModelIndex index = ui->image_list_view->currentIndex();
    QVariant data = ui->image_list_view->model()->data(index);

    //QImage * tmpImg = data.value<QImage*>(); //Returns compilation error
    //pImageMap->SetInputImage(pTmpImg);
}

1 个答案:

答案 0 :(得分:0)

如何?通过不使用指针开始:)

Modern C ++的主要存在理由是在不必担心手动内存管理的情况下启用编程。您所要做的就是使用QImage值。它们复制起来很便宜,然后由编译器和图像实现为您管理内存。就是这样。

要提取QImage - 而不是指向它的指针 - 然后你会写:

auto const role = Qt::DecorationRole;
auto model = ui->image_list_view->model();
auto const image = model->data(index, role).value<QImage>();