Название: вопрос по QPrint
Отправлено: GuardNW от Апрель 14, 2011, 15:06
C++ (Qt) QPainter painter(this); QRect mRect(painter.viewport()); painter.setBrush(Qt::white); painter.setPen(QPen(Qt::green,3,Qt::DashDotDotLine)); painter.drawRect(mRect); painter.drawLine(0,0,mRect.width(),mRect.height()); painter.drawLine(mRect.width(),0,0,mRect.height()); painter.setBrush(Qt::NoBrush); painter.setPen(QPen(Qt::blue,3)); painter.drawEllipse(mRect); painter.setPen(Qt::black); painter.setFont(QFont("Arial Black",20,QFont::Normal)); painter.drawText(mRect,Qt::AlignCenter,"Printer Draw Test");
вот есть такой код, но после нажатия на печать в диалоге, выводит сообщение: "QPainter::begin: Paint device returned engine == 0, type: 1 QPainter::viewport: Painter not active QPainter::setBrush: Painter not active QPainter::setPen: Painter not active"
Название: Re: вопрос по QPrint
Отправлено: Пантер от Апрель 14, 2011, 15:12
А в какой функции ты это выполняешь? Видать не в paintEvent?
Название: Re: вопрос по QPrint
Отправлено: GuardNW от Апрель 14, 2011, 15:21
//=========================================================================// Printer::Printer(QWidget *pwgt):QWidget(pwgt) { m_pPrinter = new QPrinter; } //=========================================================================//
//=========================================================================// Printer::~Printer() { delete m_pPrinter; } //=========================================================================//
//=========================================================================// void Printer::paintEvent(QPaintEvent *pe) { draw(this); } //=========================================================================//
//=========================================================================// void Printer::slotPrint() { QPrintDialog dlg(m_pPrinter,this);
dlg.setMinMax(1,1); if(dlg.exec() == QDialog::Accepted) { draw(m_pPrinter); } } //=========================================================================//
//=========================================================================// void Printer::draw(QPaintDevice *ppd) { QPainter painter(this); QRect mRect(painter.viewport());
painter.setBrush(Qt::white); painter.setPen(QPen(Qt::green,3,Qt::DashDotDotLine)); painter.drawRect(mRect); painter.drawLine(0,0,mRect.width(),mRect.height()); painter.drawLine(mRect.width(),0,0,mRect.height());
painter.setBrush(Qt::NoBrush); painter.setPen(QPen(Qt::blue,3)); painter.drawEllipse(mRect);
painter.setPen(Qt::black); painter.setFont(QFont("Arial Black",20,QFont::Normal)); painter.drawText(mRect,Qt::AlignCenter,"Printer Draw Test"); } //=========================================================================// вот полный код, делаю по учебнику
Название: Re: вопрос по QPrint
Отправлено: Пантер от Апрель 14, 2011, 15:24
QPainter painter; painter.begin(ppd);
так попробуй.
Название: Re: вопрос по QPrint
Отправлено: GuardNW от Апрель 14, 2011, 15:44
Спасибо! Помогло!
|