QTableView printing

后端 未结 3 971
轻奢々
轻奢々 2020-12-01 13:49

I am new on QT an I try to print out from QTableView

How can I do this?

Thank a lot

3条回答
  •  生来不讨喜
    2020-12-01 14:06

    Here is a variation of the first answer that gets rid of the intermediate file.

    QString strStream;
    QTextStream out(&strStream);
    
    const int rowCount = pPublic->tableView->model()->rowCount();
    const int columnCount = pPublic->tableView->model()->columnCount();
    
    out <<  "\n"
        "\n"
        "\n"
        <<  QString("%1\n").arg(strTitle)
        <<  "\n"
        "\n"
        "\n";
    
    // headers
    out << "";
    for (int column = 0; column < columnCount; column++)
        if (!pPublic->tableView->isColumnHidden(column))
            out << QString("").arg(pPublic->tableView->model()->headerData(column, Qt::Horizontal).toString());
    out << "\n";
    
    // data table
    for (int row = 0; row < rowCount; row++) {
        out << "";
        for (int column = 0; column < columnCount; column++) {
            if (!pPublic->tableView->isColumnHidden(column)) {
                QString data = pPublic->tableView->model()->data(pPublic->tableView->model()->index(row, column)).toString().simplified();
                out << QString("").arg((!data.isEmpty()) ? data : QString(" "));
            }               
        }
        out << "\n";
    }
    out <<  "
    %1
    %1
    \n" "\n" "\n"; QTextDocument *document = new QTextDocument(); document->setHtml(strStream); QPrinter printer; QPrintDialog *dialog = new QPrintDialog(&printer, NULL); if (dialog->exec() == QDialog::Accepted) { document->print(&printer); } delete document;

提交回复
热议问题