crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Печать формы, Классная вешь Spacer, а как ее применить для печати
Гость_Гость__AK__*_*
сообщение 9.12.2011, 12:27
Сообщение #1





Гости








    


Добро время суток.
Есть форма с layout'ами и spacer'ами - все классно, само раздвигается, строки текста переносятся, label'ы расползаются по углам. Как бы всю эту автоматизацию применить к печати? Получаю painter, но самому рассчитывать ширины всех label'ов с разными шрифтами и прочими нюансами совсем грустно. Можно ли как-то пожелить сгенерированный ui c painter'ом?
Да, я понимаю, что есть всякие генераторы отчетов, но разбираться с новой методой, когда есть уже всем удовлетворяющий ui+QDialog как-то неразумно, да и БД у меня нет (небольшой список данных на пол-листа).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 9.12.2011, 12:44
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


можно создать фиктивный виджет с нужными тебе размерами и напечатать его методом void QWidget::render... туда куда тебе нужно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BlueIceScream
  опции профиля:
сообщение 9.12.2011, 17:46
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 21.11.2011
Из: Республика Дагестан
Пользователь №: 3016

Спасибо сказали: 18 раз(а)




Репутация:   3  


  
  QPrinter *pnt = new QPrinter;
  QPrintDialog *pntDlg = new QPrintDialog(printer, this);
  if (pntDlg->exec() == QDialog::Accepted)
   {
     QPainter p(printer);
     QPixmap pm = QPixmap::grabWidget(this);
     p.drawPixmap(0, 0, pm);
   }


Разрешение конечно оставляет желать лучшего. Да и вам как я поняла нужно само содержаниес с разметкой без оформления стилем. Думаю для такого варианта придется переписать функции QPixmap::grabWidget или QWidget::render. Придется все таки считать самому.

  
  QPrinter *pnt = new QPrinter;
  QPrintDialog *pntDlg = new QPrintDialog(pnt, this);
  if (pntDlg->exec() == QDialog::Accepted)
   {
     QPainter p(pnt);
     QPixmap pm = QPixmap::grabWidget(this);
     p.drawPixmap(0, 0, pm);
   }


Разрешение конечно оставляет желать лучшего. Да и вам как я поняла нужно само содержаниес с разметкой без оформления стилем. Думаю для такого варианта придется переписать функции QPixmap::grabWidget или QWidget::render. Придется все таки считать самому.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.11.2024, 3:29