qt - 如何检查 QPdfWriter 对象是否可以写入指定文件?
问题描述
我正在使用命令在 Qt 中创建 PDF 文档:
QPdfWriter *pdf;
pdf = new QPdfWriter(filename);
有时由于文件名错误或存在文档而未创建对象,并且在其他应用程序中打开...
如何检查是否创建了对象(如果 pdf 指针指向有效对象)?
编辑:我的错误是,没有创建该对象。这不是真的。QPdfWriter 对象已创建,但没有生成异常或错误。我可以设置一些属性。当我尝试向文档写入内容时,稍后会出现问题 - 请参阅最后 3 个命令的注释:
pdf->setParent(this);
pdf->setPageSize(QPdfWriter::A4);
pdf->setPageOrientation(QPageLayout::Orientation::Landscape);
QPainter *p = new QPainter(pdf); //got message: QPainter::begin(): Returned false
ui->chartView->render(p); // no error
p->end(); // got message: QPainter::end: Painter not active, aborted
我阅读了QpdfWriter和父类QPagedPaintDevice和QPaintDevice的文档。我找不到任何属性/方法来检查我是否可以写入文档...
所以问题 - 如何检查我是否可以写入文件?
解决方案
我刚刚偶然发现了同样的问题,提示bool QFileInfo::isWritable() const
并没有对我有用。尽管您基本上通过对倒数第三个命令的评论自己给出了答案,但您可以通过返回值QPainter::begin()
检查是否QPdfWriter
可以生成 pdf。
QPainter *p = new QPainter;
if (p->begin(pdf)) {
ui->chartView->render(p);
p->end();
} else {
// error message...
}
推荐阅读
- python-3.x - 过滤 10 分钟间隔的行并从前(1 或 2)行或下(1 或 2)行估算任何缺失值
- python - 正则表达式找不到所有
- electron - 我可以用电子找到计算机上的所有音乐文件吗?
- reactjs - 反应路线与查询字符串不匹配
- elasticsearch - Elastic 使用 edge_ngram 从搜索返回意外结果
- jupyter-notebook - 在 SQL 中从国家逃犯最少的两个地区获取数据时遇到问题
- gradle - Gradle 与 Idea 冲突
- flutter - Flutter 中的 3D 球体效果
- javascript - 有谁知道如何使用 JavaScript 访问受应用程序限制的端点 HMRC API?
- java - 搜索用户通过对象数组输入的数据