crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> QTableView+QPrinter
LE0N
  опции профиля:
сообщение 5.4.2009, 14:53
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 10.3.2009
Из: Беларусь
Пользователь №: 604

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




Репутация:   0  


В общем понадобилось распечатывать таблицу с данными...
Немножко погуглив, так и не понял как это делается :(
Стандартной много-страничной печати этого самого QTableView нету?
Ткните носом, пожалуйста, куда смотреть :))

Сообщение отредактировал LE0N - 5.4.2009, 22:57
Причина редактирования: про культуру тоже не забываем
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
panter_dsd
  опции профиля:
сообщение 5.4.2009, 15:21
Сообщение #2


Жаждущий знаний
***

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

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




Репутация:   3  


Формируешь html, а его уже печатаешь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 5.4.2009, 18:46
Сообщение #3


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

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




Репутация:   6  


А почему модель должна печататься интересно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.4.2009, 18:48
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(trdm @ 5.4.2009, 22:46) *
А почему модель должна печататься интересно?
я думаю человек имел в виду её содержимое.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 5.4.2009, 18:58
Сообщение #5


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

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




Репутация:   6  


что имел ввиду человек тут понятно...
и в принципе теперь становится понятным заявление этого человека о патернах и технике программирования в частности.
думаю принцып разделяй и властвуй ему не знаком :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LE0N
  опции профиля:
сообщение 5.4.2009, 22:56
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 10.3.2009
Из: Беларусь
Пользователь №: 604

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




Репутация:   0  


Цитата
что имел ввиду человек тут понятно...
и в принципе теперь становится понятным заявление этого человека о патернах и технике программирования в частности.
думаю принцып разделяй и властвуй ему не знаком

Смею вас заверить - вы ошибаетесь.
По поводу QTableModel, я просто описался. QTableView на его месте должно быть :)
Т.е. вьюху запихнуть в принтер, если вам угодно.
И что вы имеете против моих заявлений? Я что то пропустил в том топике? Мммм...Пошёл читать :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
c00ker
  опции профиля:
сообщение 6.4.2009, 14:38
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 6.4.2009
Из: Архангельск
Пользователь №: 664

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




Репутация:   0  


http://qt-apps.org/content/show.php/TableV...r?content=76616

вроде готовое решение, не тестил
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LE0N
  опции профиля:
сообщение 6.4.2009, 18:17
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 10.3.2009
Из: Беларусь
Пользователь №: 604

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




Репутация:   0  


Цитата
вроде готовое решение, не тестил

Да вот вчера тоже нашёл это готовое решение...
Не компилится у меня :( Даже пример не компилится...
Матюкается на QtCore.lib, и ещё 2 либы, одна из которых включена в релиз.
Я проверил в коталоге lib в моём Qt даже QtCore.a нет (только *.prl). Подумал, что у меня что то не собрано...(После инсталла Qt инсталлятором я не запускал configure && mingw32-make)
Попробывал запустить - в итоге mingw32-make обламывается по середине :(
Вот сейчас буду полностью переустанавливать Qt :((

Сообщение отредактировал LE0N - 6.4.2009, 18:17
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.4.2009, 18:36
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(LE0N @ 6.4.2009, 22:17) *
После инсталла Qt инсталлятором я не запускал configure && mingw32-make)
дак в этом нужды небыло. бинари уже в инсталяшку входят.

Цитата(LE0N @ 6.4.2009, 22:17) *
Qt даже QtCore.a нет
без цыфры! значит хочет собиратся со статической версией Qt.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LE0N
  опции профиля:
сообщение 11.4.2009, 21:52
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 10.3.2009
Из: Беларусь
Пользователь №: 604

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




Репутация:   0  


Цитата
без цыфры! значит хочет собиратся со статической версией Qt.

Спасибо, я собрал тот пример. Но он мне немного не подходит...
В общем такой вопрос к вам (я, всё таки, сделал на базе QTextBrowser небольшое двигло под свои нужды)
Когда я начинаю печатать, то каждая страница печатается в своей сессии.
Раскрывающийся текст
bool
print_preview_form::print() {
    printer.setOutputFormat(QPrinter::NativeFormat);
    printer.setOutputFileName(QString());
    QPrintDialog dialog(&printer,this);
    dialog.setWindowTitle("Печать накладной...");
    if (dialog.exec() == QDialog::Rejected) return false;

    int doccopies;
    int pagecopies;
    if (printer.collateCopies()) {
        doccopies = 1;
        pagecopies = printer.numCopies();
    } else {
        doccopies = printer.numCopies();
        pagecopies = 1;
    }

    // get page range
    int firstpage = printer.fromPage();
    int lastpage = printer.toPage();
    if (firstpage == 0 && lastpage == 0) { // all pages
        firstpage = 1;
        lastpage = get_pages_count();
    }

    // print order
    bool ascending = true;
    if (printer.pageOrder() == QPrinter::LastPageFirst) {
        int tmp = firstpage;
        firstpage = lastpage;
        lastpage = tmp;
        ascending = false;
    }
    for (int dc=0; dc<doccopies; dc++) {
        int pagenum = firstpage;
        while (true) {
            for (int pc=0; pc<pagecopies; pc++) {
                if (printer.printerState() == QPrinter::Aborted ||
                    printer.printerState() == QPrinter::Error) {
                    return false;
                }
                // print page
                paint_page(pagenum);
                ui.textBrowser->print(&printer);
                if (pc < pagecopies-1)
                    qDebug() <<printer.newPage();
            }
            if (pagenum == lastpage)
                break;
            if (ascending)
                pagenum++;
            else
                pagenum--;
            printer.newPage();
        }
        if(dc < doccopies-1)
            printer.newPage();
    }
    return true;
}

При этом ругается так:
QPainter::begin(): Returned false
---
Как видно из кода, каждую страницу я формирую сам, а не загоняю всё в QTextBrowser....

Сообщение отредактировал LE0N - 11.4.2009, 21:53
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 27.12.2024, 12:30