Newer
Older
AutomaticVerification / softwareDirectory / AutoVerScheme / testdataitem.cpp
李现川 on 14 Mar 2024 7 KB no commit message
#include "testdataitem.h"
#include "ui_testdataitem.h"
#include "QMessageBox.h"

TestDataItem::TestDataItem(QWidget *parent) :
    InfoBase(parent),
    ui(new Ui::TestDataItem)
{
    ui->setupUi(this);
    this->initForm();
}

TestDataItem::~TestDataItem()
{
    delete ui;
}
void TestDataItem::initForm()
{

    //tableWidget设置
    //设置控件的边框显示
    ui->tableWidget->setStyleSheet("QHeaderView::section {"
                                "border: 1px solid rgba(197, 196, 196, 1);"
                                "border-left:none;"
                                "border-top:none;"
                                "background-color:white;"
                               "}");

   // ui->tableWidget->setRowCount(10); // 设置10行
    ui->tableWidget->setColumnCount(15); // 设置11列
    ui->tableWidget->setColumnWidth(0, 80); // 设置第一列的宽度为100像素
    ui->tableWidget->verticalHeader()->setParent(nullptr); //隐藏行头
  //QTableWidgetItem *item = new QTableWidgetItem("测试数据");
    //item->setTextAlignment(Qt::AlignCenter);
    //ui->tableWidget->setItem(0, 0, item); //设置数据
    ui->tableWidget->setColumnWidth(0,0);
    //初始化TableWidget 设置列
    QStringList headers;
    headers <<"ID" << "序号" << "设备名称" << "型号规则" << "辅助字段" << "出厂编号"
            << "生产厂家"<<"委托单位" <<"使用部门"<< "检定员"<< "检定时间"
            <<"检定有效期"<<"计量标识"<<"限用说明"<<"操作";
    ui->tableWidget->setHorizontalHeaderLabels(headers);
}
void TestDataItem::ShowMessageBox(QString title,QString value) {
    // 创建一个QMessageBox对象
    QMessageBox msgBox;

    // 设置消息框的标题
    msgBox.setWindowTitle(title);

    // 设置消息框的文本内容
    msgBox.setText(value);

    // 设置消息框的标准按钮,这里是“确定”按钮
    msgBox.setStandardButtons(QMessageBox::Ok);

    // 显示消息框
    msgBox.exec();
}
void TestDataItem::Load()
{


     // ========================================================================================
     // 主页面初始化 检定管理初始化
     // ====================================================================================
    ui->tableWidget->setRowCount(0);
    ui->stackedWidget->setCurrentIndex(0);
     //先设置为行为0
     ui->tableWidget->setRowCount(0);
     // 调用数据库管理器的函数获取数据
     int rowCount=0;
     int row=0;
     QList<VerificationData> data = dbManager.getVerificationData();
     for (const VerificationData& item : data) {
          rowCount = ui->tableWidget->rowCount();

          ui->tableWidget->insertRow(rowCount);
          ui->tableWidget->setItem(row, 0, new QTableWidgetItem(item.id));
          ui->tableWidget->setItem(row, 1, new QTableWidgetItem(QString::number(row+1)));
          ui->tableWidget->setItem(row, 2, new QTableWidgetItem(item.sample_name));
          ui->tableWidget->setItem(row, 3, new QTableWidgetItem(item.model));
          ui->tableWidget->setItem(row, 4, new QTableWidgetItem(item.help_instruction));
          ui->tableWidget->setItem(row, 5, new QTableWidgetItem(item.manufacture_no));
          ui->tableWidget->setItem(row, 6, new QTableWidgetItem(item.manufacturer));
          ui->tableWidget->setItem(row, 7, new QTableWidgetItem(item.customer_name));
          ui->tableWidget->setItem(row, 8, new QTableWidgetItem(item.FULL_NAME));
          ui->tableWidget->setItem(row, 9, new QTableWidgetItem(item.NAME));
          ui->tableWidget->setItem(row, 10, new QTableWidgetItem(item.trace_date.toString()));
          ui->tableWidget->setItem(row, 11, new QTableWidgetItem(item.measure_valid_date.toString()));
          ui->tableWidget->setItem(row, 12, new QTableWidgetItem(item.meter_identify));
          ui->tableWidget->setItem(row, 13, new QTableWidgetItem(item.restriction_instruction));
          //实现单元格添加两个按钮
          // 创建一个QWidget作为单元格的容器
          QWidget *widget = new QWidget();
          QHBoxLayout *layout = new QHBoxLayout(widget); // 水平布局


          QPushButton *button = new QPushButton("详情");
          QPushButton *button2 = new QPushButton("预览");

          //设置按钮1简单样式
          button->setStyleSheet("QPushButton {"
                                  "    border: none; /* 无边框 */"
                                  "    color: green; /* 文本颜色 */"
                                  "    text-decoration: underline; /* 文本下划线 */"
                                  "}");

           // 设置鼠标悬停时的光标样式为小手图标
           button->setCursor(Qt::PointingHandCursor);
          // 连接按钮的 clicked 信号到自定义槽函数
           connect(button, &QPushButton::clicked, this, [this, button, row]() {
               // 获取当前行第一列的 ID
               QTableWidgetItem *idItem = this->ui->tableWidget->item(row, 0);
               if (idItem) {
                   QString id = idItem->text();
                   OnButtonSelectClicked(id);
               }

           });
           //设置按钮2简单样式
           button2->setStyleSheet("QPushButton {"
                                   "    border: none; /* 无边框 */"
                                   "    color: green; /* 文本颜色 */"
                                   "    text-decoration: underline; /* 文本下划线 */"
                                   "}");

            // 设置鼠标悬停时的光标样式为小手图标
            button2->setCursor(Qt::PointingHandCursor);
           // 连接按钮的 clicked 信号到自定义槽函数
            connect(button2, &QPushButton::clicked, this, [this, button2, row]() {
                // 获取当前行第一列的 ID
                QTableWidgetItem *idItem = this->ui->tableWidget->item(row, 0);
                if (idItem) {
                    QString id = idItem->text();
                    OnButtonPreViewtClicked(id);
                }

            });
            //将按钮添加到布局控件
            layout->addWidget(button);
            layout->addWidget(button2);
            layout->setContentsMargins(5, 5, 0, 0); // 设置布局边距为0
            widget->setLayout(layout);
            //将布局控件添加到 单元格
            ui->tableWidget->setCellWidget(row, 14, widget);
            // 调整表格大小以适应内容
             //ui->tableWidget->resizeColumnsToContents();
            // ui->tableWidget->resizeRowsToContents();
          row++;
         }
}
void TestDataItem::OnButtonSelectClicked(QString id)
{
    // ========================================================================================
    // 编辑按钮 点击事件  进入详情页面
    // ====================================================================================
     //DeviceInfoInit(id);
     ui->stackedWidget->setCurrentIndex(1);
     QMessageBox::information(this, "ID",id);
}
void TestDataItem::OnButtonPreViewtClicked(QString id)
{
    // ========================================================================================
    // 预览按钮 点击事件  进入详情页面
    // ====================================================================================
     //DeviceInfoInit(id);
     //ui->stackedWidget->setCurrentIndex(1);
     QMessageBox::information(this, "ID",id);
}

void TestDataItem::on_pushButton_clicked()
{
     ui->stackedWidget->setCurrentIndex(0);
}