我正在使用以下命令在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的文档。我找不到任何属性/方法来检查是否可以写入文档...
那么问题-如何检查我是否可以写文档?
答案 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...
}