2016-12-21 6 views
-1

Использование C++ в качестве языка в Qt Creator Я создал блокнот (такой же, как простой текстовый редактор для Microsoft Windows, который является базовой программой для редактирования текста), но я не смог найти точный код для его варианта печати для сохранения в виде файла изображения или PDF и печати, что записывается в созданном блокноте. Написанный код дает ошибку говоряРаспечатайте текст на C++ с помощью Qt creator

...\NotePad\mainwindow.cpp:5: error: QPrinter: No such file or directory 
#include <QPrinter> 

код, написанный

#include <QPrinter> 
void MainWindow::on_actionPrint_triggered() 
{ 
    QPrinter printer(QPrinter::HighResolution); 
    printer.setOutputFileName("print.ps"); 
    painter.end(); 
} 
+3

Разве это не жестоко знать об ошибке и не делиться ею с нами? «дает ошибку» не помогает при решении вашей проблемы. Также используется 'painter.end()', опечатка в фактическом коде или опечатке здесь? – stefaanv

+0

Отредактировал вопрос –

+0

Чтобы не найти файл включения QPrinter, обратитесь к этой ссылке: http://stackoverflow.com/questions/19145763/qt-cannot-open-include-file-qprinter – stefaanv

ответ

3

Вы можете использовать QTextDocument для простой печати задачи, как это. Предполагая, что вы загрузили текст в него, вы можете сделать следующее (я использую печать в PDF только в качестве примера, вы можете печатать везде, где вы хотите):

QTextDocument doc; // your text is here 
QPrinter printer; 
printer.setOutputFileName("<your_file_name_goes_here"); 
printer.setOutputFormat(QPrinter::PdfFormat); 
doc.print(&printer); 
printer.newPage(); // this might not be necessary if you want just 1 page, I'm not sure 

Если вы хотите использовать QPainter , вы должны

QPrinter printer; 
// setup the printer 
QPainter painter; 

if(!painter.begin(&printer)) 
{ 
    // return, throw exception, whatever 
} 
painter.drawText(10, 10, "your_text"); 
printer.newPage(); // Again, this might not be necessary if you want just 1 page, I'm not sure 
painter.end(); 
+0

@Chum_ChumZy, он рисует «ваш_текст», в положении с (10,10) координатами. 'QPrinter' происходит от' QPaintDevice', поэтому вы можете нарисовать на нем 'QPainger' точно так же, как вы можете печатать на что-нибудь еще (например,' QImage'). – SingerOfTheFall

+0

не могли бы вы объяснить, что делает painter.drawText (10, 10, "your_text"); имею в виду? Я ищу код варианта печати fyi :) –

+0

Я хочу напечатать то, что написано в созданной блокноте, используя Qt. Не то, что показывает консоль :) –