Qt:使用poppler库打开qrc pdf

问题描述

| 我使用poppler库显示pdf的函数遇到了一些麻烦。下面的代码是发生问题的函数。 const QString&file是文件的路径 int页面是必须打开的页面 当我将文件设置为真实路径时(例如\“ / Users / User / Documents / xxx.pdf \”),打开它没问题。但是,当我给出一个qrc文件的路径(\“:/ files / xxx.pdf \”)时,它将无法正常工作。我想用它来显示应用程序内的用户手册。 我还尝试过先用它制作一个QFile,将其打开并执行readAll,然后通过执行“ 0”来加载接收到的QByteArray,但是在以ReadOnly模式打开QFile时它已经出错。
void class::setPdf(const QString &file,int page)
{
    Poppler::Document *doc = Poppler::Document::load(file);
    if (!doc) {
        QMessageBox msgBox(QMessageBox::Critical,tr(\"Open Error\"),tr(\"Please check preferences: cannot open:\\n\") + file,QMessageBox::Ok,this);
        msgBox.exec();
    }
    else{ /*Code for displaying the pdf,which works fine*/
    }
}
我希望你能帮帮我, 问候, 马特     

解决方法

           我也尝试过先制作QFile   从中打开并执行   readAll,然后加载QByteArray   收到者   正在执行Poppler :: Document :: loadFromData(   qbytearray),但它已经出错   在ReadOnly中打开QFile时   模式。
QFile f;
f.setFileName(\":/skin/AppIcon16.png\");
f.open(QIODevice::ReadOnly);
QByteArray r=f.readAll();
从资源中完美读取所有数据,并进行了检查。所以我建议您在尝试时做错了。可能是路径错误,也许还有其他...     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...