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