123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #ifndef COMPAREITEMLISTDIALOG_H
- #define COMPAREITEMLISTDIALOG_H
- #include <QStandardItemModel>
- #include <QSortFilterProxyModel>
- #include <QTableView>
- #include "DialogBase.h"
- #include "GlobalVariable.h"
- /**
- * @brief 自定义排序类
- *
- */
- class CSortModel : public QSortFilterProxyModel
- {
- Q_OBJECT
- public:
- explicit CSortModel(QObject *parent = nullptr) : QSortFilterProxyModel(parent) {}
- ~CSortModel() {}
- protected:
- /* 重载比较函数 */
- bool lessThan(const QModelIndex &left, const QModelIndex &right) const override;
- };
- /* 点击空白处不会取消选中的QTableView */
- class CTableView : public QTableView
- {
- public:
- using QTableView::QTableView;
- protected:
- void mousePressEvent(QMouseEvent *event) override
- {
- QModelIndex idx = indexAt(event->pos());
- if (!idx.isValid()) {
- // 点击空白处,什么都不做
- return;
- }
- QTableView::mousePressEvent(event);
- }
- };
- /**
- * @brief 对比项列表弹窗
- * 1、对比项具体数据在全局变量中存储,表格中主要存储对比项的ID,用这个ID去查找对比项的具体数据
- *
- */
- namespace Ui {
- class CompareItemListWidget;
- }
- class CompareItemListDialog : public DialogBase
- {
- Q_OBJECT
- public:
- explicit CompareItemListDialog(QWidget *parent = nullptr);
- ~CompareItemListDialog() override;
- /* 设置已有的对比项数据 */
- void setCompareItemList(const QList<CompareItemTableItem_t>& list);
- private slots:
- /* 点击了关闭按钮 */
- void do_pBtn_close_Clicked();
- /* 点击了添加按钮 */
- void do_pBtn_add_Clicked();
- /* 点击了删除按钮 */
- void do_pBtn_delete_Clicked();
- /* 点击了编辑按钮 */
- void do_pBtn_edit_Clicked();
- /* 启用对比项 */
- void do_pBtn_enable_Clicked();
- /* 禁用对比项 */
- void do_pBtn_disable_Clicked();
- /* 显示详情 */
- void do_tableView_doubleClicked(const QModelIndex &index);
- /* 表格点击了一行 */
- void do_tableView_clicked(const QModelIndex &index);
- /* 修改了选择行的状态 */
- void do_selectChanged(const QItemSelection &selected, const QItemSelection &deselected);
- /* 点击了标题栏选择框 */
- void do_headerSelect_clicked(bool state);
- private:
- /* 初始化表格 */
- void initTable();
- /* 添加一行 */
- void addRow(CompareItemTableItem_t tableItem);
- private:
- Ui::CompareItemListWidget *ui;
- QStandardItemModel* m_model; /* 表格模型,存储数据 */
- CSortModel* m_sortModel; /* 排序模型 */
- const int m_userRole_CompareItemID = Qt::UserRole + 1; /* 自定义角色,用于存储对比项ID */
- };
- #endif // COMPAREITEMLISTDIALOG_H
|