如何获取存储在模型中的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);
}
答案 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>();