Ruslan Polupan
12 червня 2019 р. 19:05

Виведення на друк точного вмісту QTableView (QTableWidget)

Доброго вам дня.
Знову як замітка.
Виникла потреба виводити на друк точну копію вмісту QTableWidget з делегатами тощо.
Вийшло таке:


void FinalPage::on_pushButtonPrint_clicked()
{

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

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

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

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

    QPrintPreviewDialog  *prDialog = new QPrintPreviewDialog(&printer, this);

    ui->tableWidgetName->render(&printer);

    connect(prDialog,&QPrintPreviewDialog::paintRequested,this,&FinalPage::printPreviewNeeds);

    prDialog->showMaximized();
    prDialog->exec();

}

void FinalPage::printPreviewNeeds(QPrinter *)
{
    ui->tableWidgetName->render(&printer);
}

По статті запитували0питання

2

Вам це подобається? Поділіться в соціальних мережах!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up