Russian Qt Forum

Qt => Печать => Тема начата: Sahab от Май 16, 2010, 23:54



Название: Печать контента в мм ед. изм.
Отправлено: Sahab от Май 16, 2010, 23:54
Как нарисовать допустим окружность нужного радиуса в мм.
Нарисовать и просмотреть с пом. QPrintPreviewWidget

thx to ALL;


Название: Re: Печать контента в мм ед. изм.
Отправлено: BaltikS от Май 23, 2010, 12:08
1) создать слот и соединить с сигналом paintRequested ( QPrinter * printer )
2) работать с классом QPrinter & QPainter, который передаётся в качестве параметра...особо обратить внимание на enum QPrinter::Unit


Название: Re: Печать контента в мм ед. изм.
Отправлено: Sahab от Июнь 13, 2010, 23:50
ниочем... с paintRequest и так работаю... Unit мне никаким боком не поможет


Название: Re: Печать контента в мм ед. изм.
Отправлено: Barmaglodd от Июнь 14, 2010, 07:51
Код:
    //! Получим номер пикселя по горизонтали, соотвествующий заданному расстоянию в мм
    int painterX(QPainter& painter, qreal Xmm)
    {
        return (painter.paintEngine()->paintDevice()->logicalDpiX()*Xmm)/25.4;
    }

    //! Получим номер пикселя по вертикали, соотвествующий заданному расстоянию в мм
    int painterY(QPainter& painter, qreal Ymm)
    {
        return (painter.paintEngine()->paintDevice()->logicalDpiY()*Ymm)/25.4;
    }


Название: Re: Печать контента в мм ед. изм.
Отправлено: Sahab от Июнь 14, 2010, 09:03
painter.paintEngine()->paintDevice()->logicalDpiX()
мне хватает:
Код:
printer->logicalDpiX()*Xmm / 25.4;

НО... картинка немного смещена...
причем перед этим делал    
Код:
printer->setFullPage(true);


Название: Re: Печать контента в мм ед. изм.
Отправлено: Sahab от Июль 05, 2010, 02:14
Код:
printer->setFullPage(true);
опытным путем выяснил что баг именно в ней