#include "printpage.h" #include "ui_printpage.h" printpage::printpage(QWidget *parent) : QWidget(parent) , ui(new Ui::printpage) { ui->setupUi(this); } printpage::~printpage() { delete ui; } void printpage::on_pushButton_clicked() { QPrinter printer(QPrinter::HighResolution); QPrintDialog dialog(&printer, this); if (dialog.exec() == QDialog::Accepted) { printWidget(&printer); // 打印页面内容 } } // 打印文本 void printpage::printWidget(QPrinter *printer) { QPainter painter(printer); // 1. 获取打印机的实际可打印区域(去除边距) QRectF pageRect = printer->pageRect(QPrinter::DevicePixel); // 2. 加载要打印的内容(例如:QPixmap或绘制内容) QPixmap content = ui->frame->grab(); // 如果是整个窗口 // 3. 缩放内容以适应页面 painter.drawPixmap(pageRect, content, content.rect()); painter.end(); this->close(); } // void printpage::loadCsvToTableWidget(const QString& filePath, QTableWidget* tableWidget) // { // QFile file(filePath); // if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { // QTextStream in(&file); // QString line = in.readLine(); // QStringList headers = line.split(","); // tableWidget->setColumnCount(headers.size()); // tableWidget->setHorizontalHeaderLabels(headers); // int row = 0; // while (!in.atEnd()) { // line = in.readLine(); // QStringList fields = line.split(","); // tableWidget->insertRow(row); // for (int col = 0; col < fields.size(); ++col) { // QTableWidgetItem* item = new QTableWidgetItem(fields[col]); // tableWidget->setItem(row, col, item); // } // row++; // } // file.close(); // } else { // // 文件打开失败的处理 // qDebug() << "Error opening file: "<< file.errorString(); // } // for (int i=0;i<=ui->tableWidget->rowCount() ;i++ ) { // ui->tableWidget->setRowHeight(i,31);} // for (int i=0;i<=ui->tableWidget->columnCount() ;i++ ) { // ui->tableWidget->setColumnWidth(i,119);} // } void printpage::loadCsvToTableWidget(const QString& filePath, QTableWidget* tableWidget) { QFile file(filePath); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream in(&file); // 读取标题行 QString line = in.readLine(); QStringList headers = line.split(","); // 自定义标题 QStringList customHeaders; customHeaders << "序号" << "抗菌药物" <<"MIC值(μg/mL)"<< "结果" << "ECV" << "S" << "I" << "SDD" << "R"; // 设置列数(使用自定义标题的数量) tableWidget->setColumnCount(customHeaders.size()); tableWidget->setHorizontalHeaderLabels(customHeaders); int row = 0; while (!in.atEnd()) { line = in.readLine(); QStringList fields = line.split(","); tableWidget->insertRow(row); for (int col = 0; col < customHeaders.size(); ++col) { if (col == 2) { QString value = (fields.size() > 9) ? fields[9] : ""; QTableWidgetItem* item = new QTableWidgetItem(value); item->setTextAlignment(Qt::AlignCenter); tableWidget->setItem(row, 3, item); } else if (col == 3) { QString value = (fields.size() > 3) ? fields[3] : ""; QTableWidgetItem* item = new QTableWidgetItem(value); item->setTextAlignment(Qt::AlignCenter); tableWidget->setItem(row, 2, item); } else if (col == 9) { QString value = (fields.size() > 2) ? fields[2] : ""; QTableWidgetItem* item = new QTableWidgetItem(value); item->setTextAlignment(Qt::AlignCenter); tableWidget->setItem(row, col, item); } // 其他列正常显示 else { QString value = (col < fields.size()) ? fields[col] : ""; QTableWidgetItem* item = new QTableWidgetItem(value); item->setTextAlignment(Qt::AlignCenter); tableWidget->setItem(row, col, item); } } row++; } file.close(); tableWidget->setColumnHidden(9, true); // 如果需要完全隐藏列 // 设置行高和列宽 for (int i = 0; i < tableWidget->rowCount(); i++) { tableWidget->setRowHeight(i, 30); } for (int i = 0; i < tableWidget->columnCount(); i++) { tableWidget->setColumnWidth(i, 132); } } else { qDebug() << "Error opening file: " << file.errorString(); } } void printpage::getprint(QString s) { ui->tableWidget->clear(); loadCsvToTableWidget(s, ui->tableWidget); qDebug()<<"查到了"; }