compareitemlistdialog.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. private:
  51. /* 初始化表格 */
  52. void initTable();
  53. /* 添加一行 */
  54. void addRow(CompareItemTableItem_t tableItem);
  55. private:
  56. Ui::CompareItemListWidget *ui;
  57. QStandardItemModel* m_model; /* 表格模型,存储数据 */
  58. CSortModel* m_sortModel; /* 排序模型 */
  59. const int m_userRole_CompareItemID = Qt::UserRole + 1; /* 自定义角色,用于存储对比项ID */
  60. };
  61. #endif // COMPAREITEMLISTDIALOG_H