Раскрывающийся текст
void print(QPrinter * printer) {
QPainter painter;
painter.begin(printer);
QFont norm("Courier New", 8, QFont::Normal);
QFont bold("Courier New", 8, QFont::Normal);
painter.setFont(QFont("Times", 10, QFont::Normal));
painter.drawText(20, 20, tr("Events Log generated ") +
QDate::currentDate().toString("dd.MM.yyyy") + tr(" at ") + QTime::currentTime().toString("hh:mm:ss") + "\n" + "\n");
QList<int> maxStrList;
m_model->getColumnsMaxLength(maxStrList);
int x = 50, y = 60;
for(int i = 0; i<m_model->rowCount(); i++)
{
if(i != 0)
{
y = y+20;
x = 50;
}
for(int j = 0; j<m_model->columnCount(); j++)
{
if(j == 0)
painter.setFont(norm);
else
painter.setFont(bold);
if(y > printer->pageRect().height())
{
printer->newPage();
y = 60;
painter.setFont(QFont("Times", 10, QFont::Normal));
painter.drawText(20,20,tr("Error Log generated ") + QDate::currentDate().toString("dd.MM.yyyy") + tr(" at ") + QTime::currentTime().toString("hh:mm:ss") + "\n" + "\n");
}
if(m_model->getEventItem(i).getValue(j).isEmpty() == false)
{
QString dataStr = calclulateSpacing(m_model->getEventItem(i).getValue(j),maxStrList.at(j));
dataStr = dataStr.trimmed();
if(x + (dataStr.size()*8) > printer->pageRect().width())
{
x = printer->pageRect().width() - dataStr.size()*8;
y = y + 20;
}
painter.drawText(x,y, dataStr);
x = x+(dataStr.size()*8);
}
}
}
painter.end();
}
При ее вызове информация идет на печать. Функция вызывается от сюда:
void onPrint() {
QPrinter printer;
if (QPrintDialog(&printer, this).exec() == QDialog::Accepted)
print(&printer);
}
Вопрос в следующий :
Как можно предварительно вывести печатаемую информацию на экран, а после уже на принтер.
Пытался вызывать функцию print и передавать в нее в качестве параметра пустой виджет, не отобразилось. Нашел два класса QPrintPreviewDialog и QPrintPreviewWidget, но что дальше делать не соображу. Подскажите пжлст или дайте пример. Заранее спасибо.