Russian Qt Forum

Qt => Печать => Тема начата: sergey2212 от Февраль 24, 2015, 09:56



Название: QPrinter печатает все листы. Выбор не работает. (решено)
Отправлено: sergey2212 от Февраль 24, 2015, 09:56
Товарищи пожалуйста помогите голову сломал как сделать так что бы если пользователь выбрал  страницы которые надо печатать, чтоб именно они и печатались.
Понимаю что надо копать в сторону printer.fromPage() и printer.toPage(). и сигнала PaintRequested(). но все методы тыка перепробывал ничего не получается. Заранее благодарен


Название: Re: QPrinter печатает все листы. Выбор не работает
Отправлено: gil9red от Февраль 24, 2015, 10:18
Это http://qt-project.org/doc/qt-4.8/qprinter.html#setFromTo ?


Название: Re: QPrinter печатает все листы. Выбор не работает
Отправлено: sergey2212 от Февраль 24, 2015, 10:32
Спасибо за неравнодушных людей на этом форуме. Но gil9red то куда вы меня отправили там я уже был. Все это называется знания, но я к сожалению не пойму как их применить. Вот написал я  printer.setFromTo(2,2); но он все равно печатает все страницы.


Название: Re: QPrinter печатает все листы. Выбор не работает
Отправлено: gil9red от Февраль 24, 2015, 12:06
Сделал небольшой тестовый проект проверил печать -- работает (Qt 4.8.6)

Код
C++ (Qt)
#include <QApplication>
#include <QPrinter>
#include <QTextEdit>
#include <QFile>
#include <QTextCodec>
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
 
   QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
 
   QTextEdit te;
 
   QFile file("C:\\bash.txt");
   if (file.open(QFile::ReadOnly))
       te.setText(QString(file.readAll()));
 
   QPrinter printer;
   printer.setOutputFileName( "C:\\bash.pdf" );
   printer.setFromTo(2, 2);
   te.print( &printer );
 
   return 0;
   //return a.exec();
}
 

bash.txt приложил к этому сообщению.


Название: Re: QPrinter печатает все листы. Выбор не работает. (кину 50 р на тел)
Отправлено: sergey2212 от Февраль 24, 2015, 12:33
Спасибо за пример. Но видимо этот пример работает с файлом. Хочу показать как у меня работает вывод на печать
в .h
Код:
public slots:
    void print();

private slots:
    void preview(QPrinter *printer);

в .cpp

Код:
void zakaz::print()                                //печать
{

    ////---печать---////


    QPrinter printer;
    
    printer.setOrientation(QPrinter::Portrait);
    printer.setPageSize(QPrinter::A4);

    printer.setPaperSize(QSize(210,297),QPrinter::Millimeter);
    printer.setPageMargins(20,10,0,0,QPrinter::Millimeter);

    printer.setFromTo(1,1);

       QPrintPreviewDialog previewD( &printer, this );

       connect( &previewD, SIGNAL(paintRequested(QPrinter *) ), this, SLOT(preview(QPrinter *)));
       previewD.showMaximized();
       previewD.setWindowTitle("Предпросмотр");

       previewD.exec();

а это там где рисую текст

Код:
void zakaz::preview(QPrinter *printer)
{
QPainter painter;
    painter.begin(printer);
    painter.setRenderHint(QPainter::Antialiasing, true);

//здесь рисую текст

    painter.end();



проверьте может у вас пойдет


Название: Re: QPrinter печатает все листы. Выбор не работает. (кину 50 р на тел)
Отправлено: gil9red от Февраль 24, 2015, 12:53
Если проверять ваш код, тогда не его куски выкладывайте, а компилябельный минимальный проектом с вашей проблемой ;)


Название: Re: QPrinter печатает все листы. Выбор не работает. (ки&#
Отправлено: __Heaven__ от Февраль 24, 2015, 12:56
что выдает int QPrinter::​toPage() ?
если вставить перед printer.setFromTo(1,1);


Название: Re: QPrinter печатает все листы. Выбор не работает. (кину 50 р на тел)
Отправлено: sergey2212 от Февраль 24, 2015, 13:16
Heaven Выдает ноль


Название: Re: QPrinter печатает все листы. Выбор не работает. (решено)
Отправлено: sergey2212 от Февраль 25, 2015, 11:25
Вопрос решил костылем. Уверен что есть еще проще решение.
натолкнул на мысль Heaven

перед painter.begin узнал переменную toPage и так как у меня всего две страницы то через условие if () стал рисовать страницы исходя из выбора страницы принтера. Всем спасибо за помощь. heaven если хочешь можешь оставить номер кину 50 р


Название: Re: QPrinter печатает все листы. Выбор не работает. (решено)
Отправлено: __Heaven__ от Февраль 25, 2015, 12:10
Не, спасибо :)


Название: Re: QPrinter печатает все листы. Выбор не работает. (решено)
Отправлено: dmr от Июнь 22, 2015, 15:37
Аналогичный геммор был и у меня.
http://www.prog.org.ru/topic_26852_0.html