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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Печать таблицы  (Прочитано 6180 раз)
INZER
Гость
« : Июнь 19, 2015, 12:25 »

Необходимо отправить на печать таблицу. Прочитав книгу Бланшета решил что самым удобным будет сформировать HTML и затем отправить на печать с применением класса QTextDocument.

Код:
void MainWindow::printTable()
{
    QString html;
    html = "<table width=\"100%\" border=1 cellspacing=0>\n ";

                        ...............

    html += "</table>\n";
    printHTML(html);
}

void MainWindow::printHTML(const QString &html)
{
    QPrinter printer;
    QPrintDialog printDialog (&printer,this);
    if (printDialog.exec())
    {
        QPainter painter (&printer);
        QTextDocument textDocument;
        textDocument.setHtml(html);
        textDocument.print(&printer);
    }
}

После выполнения данного кода на печать ничего не уходит и появляется следующая ошибка:
QPainter::begin: A paint device can only be painted by one painter at a time.

В какую сторону двигаться? Что происходит? Натолкните на мысль.
Спасибо.

PS: Сформированный html корректно отображается в QTextEdit

Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Июнь 19, 2015, 13:19 »

Код
C++ (Qt)
QPainter painter (&printer);
Ну дык, а зачем нужна эта строчка?
Записан

Qt 5.11/4.8.7 (X11/Win)
INZER
Гость
« Ответ #2 : Июнь 19, 2015, 13:35 »


полностью скопировал с книги Бланшета.
Заработало. Спасибо!  Улыбающийся
Записан
dmr
Гость
« Ответ #3 : Июнь 22, 2015, 15:34 »

Попробуй распечатать не ->print(&printer), а ->drawContents(&painter). У меня так стало работать и быстро и хорошо, а то до того печаталась только 1-я страница из нескольких, притормаживало и поля съезжали.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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