jianbin.chang常健彬 ce734d1af1 厂家提供原始代码
2025-07-17 08:39:15 +08:00

153 lines
5.0 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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()<<"查到了";
}