Russian Qt Forum

Qt => Печать => Тема начата: pablo от Январь 18, 2005, 15:36



Название: как вывести инфу на принтер ?
Отправлено: pablo от Январь 18, 2005, 15:36
Скажите как исользуя Qt вывести информацию на принтер ?
Если текст у меня вводится с клавиатуры(объект QTextEdit).
Какие функции надо использовать, что к чему подключать и т.п.

Заранее благодарю


Название: как вывести инфу на принтер ?
Отправлено: DenKor от Январь 18, 2005, 15:41
Вот кусок текста из моей программы
Код:

void TabDialog::print()
{
    int ret;
printer->setPageSize(QPrinter::A4);
printer->setOrientation(QPrinter::Portrait);
printer->setFullPage( TRUE );
ret=printer->setup(this);
QString s,s1;

s=lmodif->text();
    s1=RS("Текст заявки \n\n\n");s=s1+s;


    if (ret)
{    
        QPainter p;

        if( !p.begin( printer ) )
{
            return;
        }
QPaintDeviceMetrics metrics( p.device() );
        int dpiy = metrics.logicalDpiY();
        int margin = (int) ( (2/2.54)*dpiy ); // 2 cm margins
        QRect r( margin, margin, metrics.width() - 2*margin, metrics.height() - 2*margin );


p.drawText(r,Qt::PlainText ,s);
p.end();                            
}

}


Название: как вывести инфу на принтер ?
Отправлено: Admin от Январь 18, 2005, 16:14
из опыта скажу не забывайте проверять на наличие принтера в системе :)


Название: как вывести инфу на принтер ?
Отправлено: Zmey от Январь 18, 2005, 16:33
Читай "C++ GUI Programming with Qt 3". Глава 8, параграф Printing.


Название: как вывести инфу на принтер ?
Отправлено: pablo от Январь 18, 2005, 22:23
Окей пачитаю, обезательно. Спасибо за инфу


Название: как вывести инфу на принтер ?
Отправлено: Anton от Декабрь 20, 2005, 15:50
использую QTextEdit,
при выводе на печать все форматирование текста теряется, т.е. ни тебе жирного, ни подчеркнутого и т.д. qt334

void Form1::printButton_clicked()
{
QPrinter *printer;
 printer = new QPrinter( QPrinter::HighResolution );

   printer->setFullPage( TRUE );
    if ( printer->setup(textEdit) ) {               // printer dialog
        QPainter p;
        if( !p.begin( printer ) ) {               // paint on printer
             return;
        }

        QPaintDeviceMetrics metrics( p.device() );
        int dpiy = metrics.logicalDpiY();
        int margin = (int) ( (2/2.54)*dpiy ); // 2 cm margins
        QRect view( margin, margin, metrics.width() - 2*margin, metrics.height() - 2*margin );
        QSimpleRichText richText( QStyleSheet::convertFromPlainText(textEdit->text()),
                                  QFont(),
                                  textEdit->context(),
                                  textEdit->styleSheet(),
                                  textEdit->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.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);

    }
   
}


Название: как вывести инфу на принтер ?
Отправлено: Alikus от Апрель 03, 2006, 00:16
Цитата: "Anton"
использую QTextEdit,
при выводе на печать все форматирование текста теряется, т.е. ни тебе жирного, ни подчеркнутого и т.д. qt334


Код:
QStyleSheet::convertFromPlainText(textEdit->text()) 

А это тебе зачем? :)