Russian Qt Forum

Qt => Печать => Тема начата: LEO от Апрель 21, 2012, 15:02



Название: Печать ui виджетов, ай нид хэлп
Отправлено: 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);
}


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: kambala от Апрель 22, 2012, 00:19
а в printFile() вообще заходит? а может печатать надо когда dialog->exec() == QDialog::Accepted (типа нажали "ок")?


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: LEO от Апрель 25, 2012, 08:45
походу не работает вот этот кусок программы,

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

а как по другому реализовать не представляю даже, ! менял на = ничего не поменялось...


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: Bepec от Апрель 25, 2012, 08:48
Вопросы игнорирует, пишет фигню. Диагноз ясен?


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: LEO от Апрель 25, 2012, 12:13
 ???


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: Bepec от Апрель 25, 2012, 12:20

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

Ответь пожалуйста, если хочешь, чтобы тебе помогли.


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: LEO от Апрель 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);


}


Верес отдельное спасибо за наводки толковые, пойми меня правильно изучаю месяц программирование сложновато порой выразить свои мысли бывает...


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: Bepec от Апрель 25, 2012, 13:00
Не меня - Камбалу благодари ;)

PS в случае если ты начинающий - проще выложить проект и сказать: "я вот хочу печатать - нипичатаить!"
По коду проще сообразить ;)


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: LEO от Апрель 25, 2012, 14:06
решив одну проблему создал другую... в общем на печать выводится часть виджета которая видна на экране со скроллом, возможно ли чтобы формат и масштаб требуемого для распечатки виджета был неизменным(т.е. на печать выводилась полностью вся таблица, а не кусок со скроллом)??


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: LEO от Апрель 26, 2012, 08:27
в общем для наглядности и понятия сути проблемы скидываю проект, буду признателен советам и рекомендациям по решению вопроса.


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: Bepec от Апрель 26, 2012, 09:13
Итак понятна проблема - ты передаёшь туда кусок отрисованной таблицы, т.е. тот, который виден на экране.


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: LEO от Апрель 26, 2012, 09:54
да, именно так ???


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: Bepec от Апрель 26, 2012, 10:44
Как вариант конечно растянуть форму на весь экран, снять картинку и распечатать, но... Но это затратно и негибко. Буду думать.

PS хотя вариант печати с помощью HTML всё таки приходит в голову.


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: LEO от Апрель 26, 2012, 11:22
хм...
я вот тоже читал про HTML, вроде бы самый оптимальный вариант, но как применить для данной таблицы не могу понять. ??? 


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: Bepec от Апрель 26, 2012, 12:26
http://genberm.narod.ru/qt/print/print.html - почитай. Самому мне не пригодилась статейка, но может тебе пойдёт ? :)


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: LEO от Апрель 26, 2012, 12:49
спасибо, видел, видимо как то так и надо будет делать.


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: LEO от Апрель 26, 2012, 14:36
ещё вопрос... у меня таблица создана через Ui, можно ли эту таблицу созданную через uidesigner использовать для перевода в HTML код?


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: Bepec от Апрель 26, 2012, 14:40
Уопс. Это как? Понял QTableWidget.

Возможно, я думаю, но тут уж надо смотреть что да как. Да и вообще то не рекомендуется мешать ui и логику программы ;)

Попробуй, не получится - постараюсь помочь.


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: LEO от Апрель 26, 2012, 14:53
ну у меня таблица создана в ui где данные отоброжаются, хотелось бы ее использовать, чтоб что то подобное получилось в HTML, ссылаться на данные из нее...


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: LEO от Апрель 27, 2012, 10:55
как я понимаю придется виджет создавать вручную, чтобы потом перегнать таблицу в хтмл, что то я совсем запутался.. ???


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: Bepec от Апрель 27, 2012, 12:14
Зачем? у тебя есть данные, ты их можешь получить. Профит.

Просто надо функцию сделать, чтоб надёргать данные из таблицы и сформировать HTML ку.


Название: Re: Печать ui виджетов, ай нид хэлп
Отправлено: LEO от Апрель 27, 2012, 12:45
спасибо за совет, примерно понял, буду думать над реализацией.