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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Печать с растягиванием/ужиманием  (Прочитано 6154 раз)
negative
Гость
« : Ноябрь 08, 2009, 21:58 »

Здравствуйте!
Имеется QFrame произвольного размера. Требуется вывести ее на печать, таким образом, чтобы все содержимое оказалось на 1м листе. Печать сделанная по мануалам, просто берет из левого верхнего угла кусок какого-то постоянного размера.
Есть ли какой-то встроенный метод, решающий такую проблему? В документации на троллтехе как-то ничего не нашел  В замешательстве
Записан
Makss
Гость
« Ответ #1 : Ноябрь 08, 2009, 23:08 »

с помощью этой функции
Код:
QPixmap QPixmap::grabWidget ( QWidget * widget, const QRect & rectangle )

в QPixmap получите всё содержимое вашего фрейма, потом у QPixmap есть фукнция scaled - функция мастшабирования содержимого, отмасшатбируйте как вам нада, и потом QPixmap отправляйте на печать
Записан
negative
Гость
« Ответ #2 : Ноябрь 09, 2009, 21:49 »

Что-то я не понимаю. Вот был такой код:

Код:
   QPrinter printer;
   QPrintPreviewDialog preview( &printer, this );
   connect( &preview, SIGNAL(paintRequested(QPrinter *) ),
                      this, SLOT(printDocument(QPrinter*)));
   preview.exec();

Вот, я могу получить
QPixmap pix = QPixmap::grabWidget(this, this->geometry());
А дальше-то куда его совать?)
Записан
negative
Гость
« Ответ #3 : Ноябрь 09, 2009, 21:53 »

Код:
void mainArea::printPreview()
{
   QPrinter printer;
   QPixmap pix = QPixmap::grabWidget(this, 0,0,100,100);
   QPrintPreviewDialog preview( &printer, this );
   connect( &preview, SIGNAL(paintRequested(QPrinter *) ),
                      this, SLOT(printDocument(pix)));
   preview.exec();
}

void mainArea::printDocument( QPixmap *printer_ )
{
    this->render( printer_ );
}

Выводит на превью пустоту
Записан
Makss
Гость
« Ответ #4 : Ноябрь 10, 2009, 13:23 »

С помощью QPainter которому в качестве контекста рисования указываете ваш принтер - рисуете этот пиксмап.

p.s. читайте Ассистента там много чего есть, это самая лудшая документация
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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