qt 打印tableview每行第一项
时间: 2023-07-12 18:42:56 浏览: 53
您可以使用QPrinter和QPainter来实现在Qt中打印一个TableView的每行的第一项。以下是一个简单的示例代码:
```cpp
void MainWindow::printTable()
{
QPrinter printer(QPrinter::HighResolution);
printer.setPageSize(QPrinter::A4);
printer.setOrientation(QPrinter::Portrait);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName("table.pdf");
QPainter painter;
if (!painter.begin(&printer)) {
qWarning("Failed to open file");
return;
}
QTableView *tableView = ui->tableView; // your table view
QAbstractItemModel *model = tableView->model();
int rowCount = model->rowCount();
int colCount = 1; // we only print the first column
int x = 0;
int y = 0;
int w = 100; // width of the printed column
int h = 20; // height of each row
QFont font("Arial", 10, QFont::Bold);
painter.setFont(font);
for (int i = 0; i < rowCount; i++) {
QModelIndex index = model->index(i, 0); // get the first column's index
QString text = index.data().toString(); // get the text to be printed
painter.drawText(x, y, w, h, Qt::AlignLeft | Qt::AlignVCenter, text); // draw the text
y += h; // move to the next row
}
painter.end();
}
```
这个函数会将TableView的每一行的第一项打印到PDF文件中,您可以根据需要进行修改。