QPrinter运行时错误

QPrinter runtime error

本文关键字:运行时错误 QPrinter      更新时间:2023-10-16

编辑:我设法得到一个编译和非崩溃的版本。剩下的唯一事情就是获得所需的输出,但是这个特定的问题(为什么它崩溃)已经得到了回答,所以我要结束这个问题。我将在坏掉的代码之前发布工作代码。

美好的一天!我试图创建一个小的例子,将简单地创建一个pdf文档。一切都可以编译,但是当程序启动时,它就崩溃了。我正在使用Qt版本5.0.0

——新的工作代码——

int main( int argc, char **argv )
{
    QApplication app( argc, argv );
  QTextDocument doc;
  doc.setHtml( "<p>A QTextDocument can be used to present formatted text "
               "in a nice way.</p>"
               "<p align=center>It can be <b>formatted</b> "
               "<font size=+2>in</font> <i>different</i> ways.</p>"
               "<p>The text can be really long and contain many "
               "paragraphs. It is properly wrapped and such...</p>" );
   QPrinter printer;
   printer.setOutputFileName("C:\Users\SameTime\Desktop\Cutie\PDFPrintMaybe");
   printer.setOutputFormat(QPrinter::PdfFormat);
   doc.print(&printer);
   printer.newPage();
  return 0;
}

项目代码:

#-------------------------------------------------
#
# Project created by QtCreator 2013-06-08T10:07:11
#
#-------------------------------------------------
QT       += core
QT       -= gui
QT += printsupport
TARGET = PDFPrintMaybe
CONFIG   += console
CONFIG   -= app_bundle
TEMPLATE = app

SOURCES += main.cpp

----旧代码错误——下面是主要的cpp:

#include <QCoreApplication>
#include <QTextDocument>
#include <QPrinter>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QTextDocument doc;
    doc.setHtml("<h1>Testing, testing, is this thing on?!</h1>");
    QPrinter printer;
    printer.setOutputFileName("C:\Users\SameTime\Desktop\Cutie\PDFPrintMaybe");
    printer.setOutputFormat(QPrinter::PdfFormat);
    doc.print(&printer);
    printer.newPage();
    return a.exec();
}

我有点不知所措,因为它正在编译,但在运行时(几乎)立即崩溃。

尝试在堆上创建对象,否则当它们超出作用域时它们会被自动删除,然后框架可能会尝试再次删除它们并崩溃。

QTextDocument *doc = new QTextDocument();
doc->setHtml("<h1>Testing, testing, is this thing on?!</h1>");
QPrinter* printer = new QPrinter();
printer->setOutputFileName("C:\Users\SameTime\Desktop\Cutie\PDFPrintMaybe");
printer->setOutputFormat(QPrinter::PdfFormat);
doc->print(printer);
printer->newPage();