读取QT资源文件¶
小文件可以直接使用 SetInputString 读取 QByteArray。
vtkNew<vtkXMLPolyDataReader> vtpReader;
vtpReader->SetReadFromInputString(1);
{
QFile f(":/OperativePelvis_Surface.vtp");
f.open(QIODevice::ReadOnly);
QByteArray data = f.readAll();
f.close();
vtpReader->SetInputString(data.constData());
}
vtpReader->Update();
template<typename ReaderT>
vtkSmartPointer<ReaderT> LoadWithQtResourceSupport(const QString & pathOrResource)
{
vtkSmartPointer<ReaderT> reader = vtkSmartPointer<ReaderT>::New();
QString realPath = pathOrResource;
QTemporaryFile tmp;
if (pathOrResource.startsWith(":/")) {
QFile f(pathOrResource);
f.open(QIODevice::ReadOnly);
tmp.setFileTemplate(QDir::tempPath() + "/XXXXXX");
tmp.open();
tmp.write(f.readAll());
tmp.flush();
realPath = tmp.fileName();
}
reader->SetFileName(realPath.toStdString().c_str());
reader->Update();
return reader;
}