Russian Qt Forum
Ноябрь 22, 2024, 12:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: вопрос по QPrint  (Прочитано 5283 раз)
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"
« Последнее редактирование: Апрель 14, 2011, 15:13 от Пантер » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Апрель 14, 2011, 15:12 »

А в какой функции ты это выполняешь? Видать не в paintEvent?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
GuardNW
Гость
« Ответ #2 : Апрель 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");
}
//=========================================================================//
вот полный код, делаю по учебнику
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Апрель 14, 2011, 15:24 »

QPainter painter;
painter.begin(ppd);

так попробуй.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
GuardNW
Гость
« Ответ #4 : Апрель 14, 2011, 15:44 »

Спасибо! Помогло!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.069 секунд. Запросов: 22.