153 lines
5.0 KiB
C++
153 lines
5.0 KiB
C++
![]() |
#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()<<"查到了";
|
|||
|
|
|||
|
}
|