如何检查QPdfWriter对象是否可以写入指定的文件?

时间:2019-02-10 12:11:39

标签: qt object exists

我正在使用以下命令在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以及父类QPagedPaintDeviceQPaintDevice的文档。我找不到任何属性/方法来检查是否可以写入文档...

那么问题-如何检查我是否可以写文档?

1 个答案:

答案 0 :(得分:0)

我刚刚遇到了同样的问题,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...
}