compareitemlistdialog.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #ifndef COMPAREITEMLISTDIALOG_H
  2. #define COMPAREITEMLISTDIALOG_H
  3. #include <QStandardItemModel>
  4. #include <QSortFilterProxyModel>
  5. #include "DialogBase.h"
  6. #include "GlobalVariable.h"
  7. /**
  8. * @brief 自定义排序类
  9. *
  10. */
  11. class CSortModel : public QSortFilterProxyModel
  12. {
  13. Q_OBJECT
  14. public:
  15. explicit CSortModel(QObject *parent = nullptr) : QSortFilterProxyModel(parent) {}
  16. ~CSortModel() {}
  17. protected:
  18. /* 重载比较函数 */
  19. bool lessThan(const QModelIndex &left, const QModelIndex &right) const override;
  20. };
  21. /**
  22. * @brief 对比项列表弹窗
  23. * 1、对比项具体数据在全局变量中存储,表格中主要存储对比项的ID,用这个ID去查找对比项的具体数据
  24. *
  25. */
  26. namespace Ui {
  27. class CompareItemListWidget;
  28. }
  29. class CompareItemListDialog : public DialogBase
  30. {
  31. Q_OBJECT
  32. public:
  33. explicit CompareItemListDialog(QWidget *parent = nullptr);
  34. ~CompareItemListDialog() override;
  35. /* 设置已有的对比项数据 */
  36. void setCompareItemList(const QList<CompareItemTableItem_t>& list);
  37. private slots:
  38. /* 点击了关闭按钮 */
  39. void do_pBtn_close_Clicked();
  40. /* 点击了添加按钮 */
  41. void do_pBtn_add_Clicked();
  42. /* 点击了删除按钮 */
  43. void do_pBtn_delete_Clicked();
  44. /* 点击了编辑按钮 */
  45. void do_pBtn_edit_Clicked();
  46. /* 启用对比项 */
  47. void do_pBtn_enable_Clicked();
  48. /* 禁用对比项 */
  49. void do_pBtn_disable_Clicked();
  50. /* 显示详情 */
  51. void do_tableView_doubleClicked(const QModelIndex &index);
  52. /* 表格点击了一行 */
  53. void do_tableView_clicked(const QModelIndex &index);
  54. /* 修改了选择行的状态 */
  55. void do_selectChanged(const QItemSelection &selected, const QItemSelection &deselected);
  56. /* 点击了标题栏选择框 */
  57. void do_headerSelect_clicked(bool state);
  58. private:
  59. /* 初始化表格 */
  60. void initTable();
  61. /* 添加一行 */
  62. void addRow(CompareItemTableItem_t tableItem);
  63. private:
  64. Ui::CompareItemListWidget *ui;
  65. QStandardItemModel* m_model; /* 表格模型,存储数据 */
  66. CSortModel* m_sortModel; /* 排序模型 */
  67. const int m_userRole_CompareItemID = Qt::UserRole + 1; /* 自定义角色,用于存储对比项ID */
  68. };
  69. #endif // COMPAREITEMLISTDIALOG_H