На этом шаге рассмотрим класс QTextDocumentWriter.
Класс QTextDocumentWriter предоставляет три формата для записи содержимого объекта класса QTextDocument в PlainText (Простой текст), HTML и ODF (OpenDocument Format, открытый формат документов для офисных приложений). Последний формат используется многими приложениями, включая и OpenOffice.org. Для того чтобы записать файл в нужном формате, необходимо передать строку с форматом в метод setFormat(). Например, для записи в ODF-формат программный код может быть следующим:
//создали виджет редактора текста (указатель ptxt) QTextEdit* ptxt = new QTextEdit("Это <b>ПРИМЕР</b>"); //создали объект поддержки записи (writer) QTextDocumentWriter writer; //установили вызовом метода setFormat() //нужный нам формат ODF writer.setFormat("odf"); //задали имя файла вызовом метода setFileName() writer.setFileName("output.odf"); //вызов метода write() выполняет запись в файл, //этот метод принимает в качестве параметра указатель //на объект класса QTextDocument writer.write(ptxt->document());
Запись в формат PDF классом QTextDocumentWriter не поддерживается, но его легко осуществить путем рисования в контексте QPrinter.
//создаем виджет тектового редактора (указатель ptxt) QTextEdit* ptxt = new QTextEdit("Это <b>ПРИМЕР</b>"); //создаем объект принтера (printer) и устанавливаем его //при создании в режим высокого разрешения HighResolution QPrinter printer(QPrinter::HighResolution); //устанавливаем формат для вывода, вызовом метода //setOutputFormat(), в который передаем значение PdfFormat, //возможны также варианты NativeFormat и PostScriptFormat //для печати в системный принтер или в запись в формате //PostScript соответственно printer.setOutputFormat(QPrinter::PdfFormat); //при помощи метода setOutputFileName() задаем имя файла для записи printer.setOutputFileName("output.pdf"); //вызываем из объекта класса QTextDocument метод, в который //передаем адрес на наш объект принтера //эта операция осуществляет запись в назначенный нами файл ptxt->document()->print(&printer);
На следующем шаге рассмотрим добавление расцветки синтаксиса в QTextEdit.