Newer
Older
PagedTableDemo / MainWindow.cpp
tanyue 27 days ago 4 KB 20250717 添加右键菜单
#include "MainWindow.h"
#include "ui_MainWindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 设置窗口位置和大小
    resize(1366, 768);

    // 绑定信号与槽
    connect(ui->pagedTable, &QPagedTable::reloadTablePagedData, this, &MainWindow::getStandardDeviceList);

    // 初始化表格基本样式
    ui->pagedTable->initTableWidget();
    ui->pagedTable->setPage(page.tableRowCount, page.currentPage, page.totalCount, page.totalPage);

    // 设置表头
    ui->pagedTable->setColumns(buildColumns());
    ui->pagedTable->setMultiCheckType(QPagedTable::MultiCheckType::RADIO);

    createContextMenu();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::showEvent(QShowEvent * event)
{
    ui->pagedTable->initTableHeader();
    ui->pagedTable->adjustTableWidth();

    getStandardDeviceList(0);
}

void MainWindow::resizeEvent(QResizeEvent *event)
{
    if (ui->pagedTable->isVisible()) {
        ui->pagedTable->adjustTableWidth();
    }
}

QList<QPagedTableColumn> MainWindow::buildColumns()
{
    QPagedTableColumn colId;
    colId.idx = 0;
    colId.name = "id";
    colId.text = "ID";
    colId.value = colId.name;
    colId.setWidthType("pixel");
    colId.width = 0;

    QPagedTableColumn colIndex;
    colIndex.idx = 1;
    colIndex.name = "index";
    colIndex.text = "序号";
    colIndex.value = colIndex.name;
    colIndex.setWidthType("pixel");
    colIndex.width = 60;

    QPagedTableColumn colName;
    colName.idx = 2;
    colName.name = "name";
    colName.text = "设备名称";
    colName.value = colName.name;
    colName.setWidthType("percent");
    colName.width = 0.4;
    colName.setAlignType("left");
    colName.setResizeMode("stretch");

    QPagedTableColumn colModel;
    colModel.idx = 3;
    colModel.name = "model";
    colModel.text = "型号";
    colModel.value = colModel.name;
    colModel.setWidthType("percent");
    colModel.width = 0.1;

    QPagedTableColumn colSerialNo;
    colSerialNo.idx = 4;
    colSerialNo.name = "serialNo";
    colSerialNo.text = "出厂编号";
    colSerialNo.value = colSerialNo.name;
    colSerialNo.setWidthType("percent");
    colSerialNo.width = 0.1;

    QPagedTableColumn colMaker;
    colMaker.idx = 5;
    colMaker.name = "maker";
    colMaker.text = "生产厂家";
    colMaker.value = colMaker.name;
    colMaker.setWidthType("percent");
    colMaker.width = 0.15;

    QPagedTableColumn colRange;
    colRange.idx = 6;
    colRange.name = "range";
    colRange.text = "测量范围";
    colRange.value = colRange.name;
    colRange.setWidthType("percent");
    colRange.width = 0.25;

    QList<QPagedTableColumn> columnList;
    columnList.append(colId);
    columnList.append(colIndex);
    columnList.append(colName);
    columnList.append(colModel);
    columnList.append(colSerialNo);
    columnList.append(colMaker);
    columnList.append(colRange);

    return columnList;
}

void MainWindow::createContextMenu()
{
    QStringList menuList;
    menuList << "详情" << "编辑" << "删除";
    ui->pagedTable->setContextMenuLabels(menuList);

    connect(ui->pagedTable, &QPagedTable::contextMenuActionTrigged, [=](int index, int rowIdx, int colIdx){
        switch (index) {
        case 0:
            rowDetailActionHandler(rowIdx, colIdx);
            break;

        case 1:
            rowEditActionHandler(rowIdx, colIdx);
            break;

        case 2:
            rowDeleteActionHandler(rowIdx, colIdx);
            break;
        }
    });
}

void MainWindow::getStandardDeviceList(int currPage)
{
    EquipmentDao eqptDao;

    BizEquipmentRequest request;
    request.equipmentName = ui->lineEdit->text();

    page.currentPage = currPage;

    QList<BizEquipmentInfoDto> standDevList = eqptDao.getBizEqptInfoListPage(request, page);
    QList<QMap<QString, QVariant>> pageData;
    for (BizEquipmentInfoDto bizEqpt : standDevList) {
        QMap<QString, QVariant> item;

        item.insert("id", bizEqpt.id);
        item.insert("name", bizEqpt.equipmentName);
        item.insert("model", bizEqpt.model);
        item.insert("serialNo", bizEqpt.manufactureNo);
        item.insert("maker", bizEqpt.manufacturer);
        item.insert("range", bizEqpt.testRange);

        pageData.append(item);

    }

    ui->pagedTable->setTotalCount(page.totalCount);
    ui->pagedTable->setDatas(pageData);
}

void MainWindow::on_pushButton_clicked()
{
    getStandardDeviceList(0);
}

void MainWindow::rowDetailActionHandler(int rowIdx, int colIdx)
{
    qDebug() << "row detail" << rowIdx << colIdx;
}
void MainWindow::rowEditActionHandler(int rowIdx, int colIdx)
{
    qDebug() << "row edit" << rowIdx << colIdx;
}
void MainWindow::rowDeleteActionHandler(int rowIdx, int colIdx)
{
    qDebug() << "row delete" << rowIdx << colIdx;
}