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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Печать ui виджетов, ай нид хэлп  (Прочитано 14324 раз)
LEO
Гость
« : Апрель 21, 2012, 15:02 »

Есть QTableWidget  созданный в дизайнере к нему есть кнопка печати,
не могу понять в чем загвостка, не срабатывает кнопка печати в  программе...  делал по примеру перевода в текстдокумент((
заранее спасибо откликнувшимся...

void Widget::on_pushButton_2_clicked()
{
printFile();
}

void Widget::printFile()
{
    QTextEdit *editor = static_cast<QTextEdit*>(ui->tabWidget->currentWidget());
    QTextDocument *document = editor->document();
    QPrinter printer;
QPrintDialog *dialog = new QPrintDialog(&printer, ui->tbl);
if (dialog->exec() != QDialog::Accepted)


    document->print(&printer);
}
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Апрель 22, 2012, 00:19 »

а в printFile() вообще заходит? а может печатать надо когда dialog->exec() == QDialog::Accepted (типа нажали "ок")?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
LEO
Гость
« Ответ #2 : Апрель 25, 2012, 08:45 »

походу не работает вот этот кусок программы,

QTextEdit *editor = static_cast<QTextEdit*>(ui->tabWidget->currentWidget());
QTextDocument *document = editor->document();

а как по другому реализовать не представляю даже, ! менял на = ничего не поменялось...
Записан
Bepec
Гость
« Ответ #3 : Апрель 25, 2012, 08:48 »

Вопросы игнорирует, пишет фигню. Диагноз ясен?
Записан
LEO
Гость
« Ответ #4 : Апрель 25, 2012, 12:13 »

 Непонимающий
Записан
Bepec
Гость
« Ответ #5 : Апрель 25, 2012, 12:20 »


а в printFile() вообще заходит? а может печатать надо когда dialog->exec() == QDialog::Accepted (типа нажали "ок")?

Ответь пожалуйста, если хочешь, чтобы тебе помогли.
Записан
LEO
Гость
« Ответ #6 : Апрель 25, 2012, 12:56 »

я же ответил,
спасибо в общем всем кто откликнулся, но изначально был неверный метод выбран походу, сделал по другому, сейчас решу вопрос с масштабированием и думаю будет работать гуд...
Код:
void Widget::on_pushButton_2_clicked()
{
    printFile();
}



void Widget::printFile()
{


    QPrinter printer;

     QPrintDialog *dialog = new QPrintDialog(&printer);
    dialog->setWindowTitle(tr("Print Document"));
    if (dialog->exec() != QDialog::Accepted)
        return;
    QPainter painter;
    painter.begin(&printer);
    double xscale = printer.pageRect().width()/double(ui->tbl->width());
    double yscale = printer.pageRect().height()/double(ui->tbl->height());
    double scale = qMin(xscale, yscale);
    painter.translate(printer.paperRect().x() + printer.pageRect().width()/2,
                      printer.paperRect().y() + printer.pageRect().height()/2);
    painter.scale(scale, scale);
    painter.translate(-width()/2, -height()/2);

    ui->tbl->render(&painter);


}


Верес отдельное спасибо за наводки толковые, пойми меня правильно изучаю месяц программирование сложновато порой выразить свои мысли бывает...
Записан
Bepec
Гость
« Ответ #7 : Апрель 25, 2012, 13:00 »

Не меня - Камбалу благодари Подмигивающий

PS в случае если ты начинающий - проще выложить проект и сказать: "я вот хочу печатать - нипичатаить!"
По коду проще сообразить Подмигивающий
Записан
LEO
Гость
« Ответ #8 : Апрель 25, 2012, 14:06 »

решив одну проблему создал другую... в общем на печать выводится часть виджета которая видна на экране со скроллом, возможно ли чтобы формат и масштаб требуемого для распечатки виджета был неизменным(т.е. на печать выводилась полностью вся таблица, а не кусок со скроллом)??
« Последнее редактирование: Апрель 25, 2012, 14:37 от LEO » Записан
LEO
Гость
« Ответ #9 : Апрель 26, 2012, 08:27 »

в общем для наглядности и понятия сути проблемы скидываю проект, буду признателен советам и рекомендациям по решению вопроса.
Записан
Bepec
Гость
« Ответ #10 : Апрель 26, 2012, 09:13 »

Итак понятна проблема - ты передаёшь туда кусок отрисованной таблицы, т.е. тот, который виден на экране.
Записан
LEO
Гость
« Ответ #11 : Апрель 26, 2012, 09:54 »

да, именно так Непонимающий
Записан
Bepec
Гость
« Ответ #12 : Апрель 26, 2012, 10:44 »

Как вариант конечно растянуть форму на весь экран, снять картинку и распечатать, но... Но это затратно и негибко. Буду думать.

PS хотя вариант печати с помощью HTML всё таки приходит в голову.
Записан
LEO
Гость
« Ответ #13 : Апрель 26, 2012, 11:22 »

хм...
я вот тоже читал про HTML, вроде бы самый оптимальный вариант, но как применить для данной таблицы не могу понять. Непонимающий 
Записан
Bepec
Гость
« Ответ #14 : Апрель 26, 2012, 12:26 »

http://genberm.narod.ru/qt/print/print.html - почитай. Самому мне не пригодилась статейка, но может тебе пойдёт ? Улыбающийся
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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