Как напечатать диалог или окно Qt? - PullRequest
4 голосов
/ 25 марта 2009

Как мне заставить Qt напечатать полный диалог или окно? Я мог бы сбросить содержимое окна с помощью внешней программы, такой как xwd, и распечатать ее, но я бы предпочел делать все это с помощью Qt.

Ответы [ 2 ]

8 голосов
/ 25 марта 2009

В то время как вы можете использовать grabWidget , чтобы получить растровое представление диалога, по существу вы будете печатать пиксели растрового изображения, то есть диалог растеризуется с разрешением экрана, а затем масштабируется до разрешения принтера , Это может или не может привести к некоторым артефактам.

Другой способ сделать это - использовать функцию QWidget :: render () , которая берет устройство рисования. Таким образом, вы можете передать свой принтер в качестве устройства рисования. Теперь диалоговое окно «нарисовано» на принтере с разрешением принтера.

8 голосов
/ 25 марта 2009

Используйте QPixmap :: grabWidget (или QPixmap :: grabWindow для внешнего окна). Как то так:

QPixmap pix = QPixmap::grabWidget(myMainWindowWidget);

Не знаю, действительно ли вы хотите напечатать его на принтере, если это так:

QPrinter printer(QPrinter::HighResolution);
QPainter painter;
painter.begin(&printer);    
painter.drawPixmap (0, 0, &pix);    
painter.end();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...