0

編集: コンパイル済みでクラッシュしないバージョンを取得することができました。残された唯一のことは、目的の出力を取得することですが、この特定の質問 (なぜクラッシュするのか) は回答済みなので、質問を閉じています。壊れたコードの前に作業コードを投稿します。

良い一日!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();
}

コンパイル中ですが、実行すると(ほぼ)即座にクラッシュするため、少し途方に暮れています。

4

1 に答える 1

0

ヒープ上にオブジェクトを作成してみてください。そうしないと、オブジェクトが範囲を超えたときに自動的に削除され、フレームワークがそれらを再度削除しようとしてクラッシュする可能性があります。

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();
于 2013-06-08T07:32:10.717 に答える