Печать QTableView с использованием метода render - PullRequest
0 голосов
/ 19 марта 2012

Я пытаюсь напечатать табличное представление.Чтобы заполнить табличное представление, я создал свою собственную модель.Чтобы напечатать таблицу, я делаю следующее:

QPrinter printer;
QPrintDialog printDialog( &printer, 0);
if( QDialog::Accepted == printDialog.exec() ) {

    if( QPrinter::Landscape != printer.orientation() ) {
        printer.setOrientation(QPrinter::Landscape);
    }

    QPoint startPoint = QPoint(20, 20);
    QRegion printRegion = QRegion( 20, 20, printer.paperRect().width(),printer.paperRect().height() );
    for( int i = 0; i < m_tables.size(); ++i ) {
        tableView->render( &printer, startPoint, printRegion, QWidget::DrawChildren );
    }
}

Проблема заключается в том, что я печатаю в файл PDF, и там я вижу только небольшую часть таблицы.Я думал, что изменение параметра region может помочь, но на самом деле нет.Любые предложения, как это исправить?

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Хорошо, вот мое решение.Было бы приятно услышать ваше мнение.

PrintTableModel* pTableModel = new PrintTableModel();

QTableView* pTableView = new QTableView;
pTableView->setModel(pTableModel);

int width = 0;
int height = 0;
int columns = pTableModel->columnCount();
int rows = pTableModel->rowCount();

pTableView->resizeColumnsToContents();

for( int i = 0; i < columns; ++i ) {
    width += pTableView->columnWidth(i);
}

for( int i = 0; i < rows; ++i ) {
    height += pTableView->rowHeight(i);
}

pTableView->setFixedSize(width, height);
pTableView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
pTableView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

Этот код помог мне.Чтобы правильно распечатать таблицу, вы можете просто выполнить рендер вызов:

pTableView->render(printer);
0 голосов
/ 19 марта 2012

Вы можете попробовать void QPrinter::setResolution ( int dpi ), чтобы увеличить количество пикселей виджета на дюйм принтера, эффективно увеличив масштаб виджета на распечатке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...