跳转至

读取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;
}