#include "compareitemlistdialog.h" #include "ui_compareitemlistwidget.h" #include "compareitemdialog.h" #include "UIStyleManager.h" #include /* 重载比较函数 */ bool CSortModel::lessThan(const QModelIndex &left, const QModelIndex &right) const { // /* 先比较是正常日还是特殊日 */ // auto leftDay = sourceModel()->data(left, UserRole_WeekDay).toInt(); // auto rightDay = sourceModel()->data(right, UserRole_WeekDay).toInt(); // if(leftDay != rightDay) // { // return leftDay < rightDay; /* 比较周几 */ // } // /* 日期类型相等,再比较时间 */ // auto leftTime = sourceModel()->data(left, UserRole_Time).toDateTime(); // auto rightTime = sourceModel()->data(right, UserRole_Time).toDateTime(); // if(leftDay == static_cast(enum_WeekDay::WeekDay_Special)) // { // /* 特殊日,比较日期和时间 */ // return leftTime < rightTime; // }else { // /* 正常日,只比较时间 */ // return leftTime.time() < rightTime.time(); // } return true; } CompareItemListDialog::CompareItemListDialog(QWidget *parent) : DialogBase(parent), ui(new Ui::CompareItemListWidget) { QWidget *widgetContent = new QWidget(this); ui->setupUi(widgetContent); /* 设置内容 */ setContentWidget(widgetContent); /* 移除底栏 */ removeBottomWidget(); /* 设置标题 */ setTitle("对比项列表", QSize(120, 18)); UIStyle.registerWidget(widgetContent); // SPDLOG_LOGGER_DEBUG(m_logger, "ObjectName: {}", widgetContent->objectName().toStdString()); this->resize(1000 + 40, 800 + 40); /* 设置对话框大小,包含阴影的宽度 */ /* 连接信号和槽 */ connect(ui->pBtn_close, &QPushButton::clicked, this, &CompareItemListDialog::do_pBtn_close_Clicked); connect(ui->pBtn_add, &QPushButton::clicked, this, &CompareItemListDialog::do_pBtn_add_Clicked); connect(ui->pBtn_delete, &QPushButton::clicked, this, &CompareItemListDialog::do_pBtn_delete_Clicked); connect(ui->pBtn_modify, &QPushButton::clicked, this, &CompareItemListDialog::do_pBtn_edit_Clicked); /* 初始化表格 */ initTable(); } CompareItemListDialog::~CompareItemListDialog() { UIStyle.unregisterWidget(getContentWidget()); delete ui; } /* 点击了关闭按钮 */ void CompareItemListDialog::do_pBtn_close_Clicked() { this->close(); } /* 点击了添加按钮 */ void CompareItemListDialog::do_pBtn_add_Clicked() { CompareItemDialog dlg; dlg.exec(); } /* 点击了删除按钮 */ void CompareItemListDialog::do_pBtn_delete_Clicked() { } /* 点击了编辑按钮 */ void CompareItemListDialog::do_pBtn_edit_Clicked() { } /* 初始化表格 */ void CompareItemListDialog::initTable() { /* 初始化视图模型 */ m_model = new QStandardItemModel(this); m_model->setColumnCount(5); /* 设置每一列的标题 */ m_model->setHeaderData(0, Qt::Horizontal, "序号"); m_model->setHeaderData(1, Qt::Horizontal, "状态"); m_model->setHeaderData(2, Qt::Horizontal, "对比项"); m_model->setHeaderData(3, Qt::Horizontal, "通道数"); m_model->setHeaderData(4, Qt::Horizontal, "操作"); // m_model->clear(); // m_sortModel = new CSortModel(this); // m_sortModel->setSourceModel(m_model); // m_sortModel->sort(0, Qt::AscendingOrder); /* 默认升序 */ /* 设置排序数据 */ // m_sortModel->setSortRole(QtUserRole::UserRole_Time); /* 设置排序角色 */ ui->tableView->setModel(m_model); // 设置选择模式为整行选择 ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection); ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); /* 设置每列的高度 */ ui->tableView->verticalHeader()->setDefaultSectionSize(48); /* 设置横向标题可见 */ ui->tableView->horizontalHeader()->setVisible(true); /* 去掉列标题 */ ui->tableView->verticalHeader()->setVisible(false); /* 去掉网格线 */ ui->tableView->setShowGrid(false); /* 设置单元格不可编辑 */ ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); /* 禁止显示横向滚动条 */ // ui->tableView->horizontalHeader()->setStretchLastSection(true); /* 设置最后一列拉伸 */ ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed); /* 设置列宽度固定 */ /* 设置固定列宽度 */ ui->tableView->setColumnWidth(0, 160); /* 第一列宽度 */ ui->tableView->setColumnWidth(1, 160); /* 第二列宽度 */ ui->tableView->setColumnWidth(3, 240); /* 第三列宽度 */ ui->tableView->setColumnWidth(4, 280); /* 第四列宽度 */ ui->tableView->setColumnWidth(5, 96); /* 第五列宽度 */ }