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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QT3.3.8 печать на рулонной бумаге  (Прочитано 2873 раз)
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« : Октябрь 02, 2013, 12:21 »

Как добиться, что бы вывод на печать не сопровождался прокруткой и нумерацией каждой напечатанной страницы?
код
Код:
	QPrinter printer (QPrinter::HighResolution );
if (sz==3) // A3
{
     printer.setOrientation(QPrinter::Portrait);
printer.setPageSize(QPrinter::A3);
}
else // A4
{
     printer.setOrientation(QPrinter::Landscape);
printer.setPageSize(QPrinter::A4);
}
     printer.setFullPage(FALSE);
printer.setColorMode(QPrinter::GrayScale );
printer.setPrintRange(QPrinter::PageRange);

printer.setMinMax(1,100);
 if ( printer.setup( this) ) //подключение диалога принтера
{
QPainter p( &printer );

if ( !p.device() ) return;
QPaintDeviceMetrics metrics( p.device() );
int dpiy = metrics.logicalDpiY();
int margin = (int) ( (0.4/2.54)*dpiy ); // 2 поля
QRect view( margin, margin, metrics.width() - 2*margin, metrics.height() - 2*margin );
QFont font( TextEd->font() );
  font.setPointSize( 10 );
QString txt = QStyleSheet::convertFromPlainText(TextEd->text(),QStyleSheetItem::WhiteSpacePre);
    QSimpleRichText richText( txt, font,
  TextEd->context(),
  TextEd->styleSheet(),
  TextEd->mimeSourceFactory(),
  view.height() );
richText.setWidth( &p, view.width() );

int page = 1;
do {//размещение на странице

    richText.draw( &p, margin, margin, view, colorGroup() );
    view.moveBy( 0, view.height() );
    p.translate( 0 , -view.height() );
    p.setFont( font );
    p.drawText( view.right() - p.fontMetrics().width( QString::number( page ) ),
view.bottom() + p.fontMetrics().ascent() + 5, QString::number( page ) );
    if ( view.top() - margin >= richText.height() )
break;
    printer.newPage();
    page++;
} while (TRUE);
    }
Записан

Как мало времени и как много нужно узнать
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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