ProjectListWidget.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #ifndef PROJECTLISTWIDGET_H
  2. #define PROJECTLISTWIDGET_H
  3. #include <QWidget>
  4. class ProjectInfo;
  5. class PushButton;
  6. class ToolButton;
  7. class LineEdit;
  8. class TreeWidget;
  9. class QVBoxLayout;
  10. class QHBoxLayout;
  11. class QGridLayout;
  12. class QLabel;
  13. class QListWidget;
  14. class QListWidgetItem;
  15. class ProjectListItemWidget : public QWidget
  16. {
  17. Q_OBJECT
  18. public:
  19. explicit ProjectListItemWidget(QWidget *parent = nullptr);
  20. void setProj(ProjectInfo *info);
  21. ProjectInfo *proj() const;
  22. signals:
  23. void sigInfo();
  24. void sigOpen();
  25. void sigDelete();
  26. private:
  27. void initWidgets();
  28. void initLayout();
  29. void connectSignalsAndSlots();
  30. private:
  31. ProjectInfo *m_proj = nullptr;
  32. QLabel *m_name = nullptr;
  33. QLabel *m_time = nullptr;
  34. QLabel *m_taskLabel = nullptr;
  35. QLabel *m_task = nullptr;
  36. QLabel *m_typeLabel = nullptr;
  37. QLabel *m_type = nullptr;
  38. PushButton *m_info = nullptr;
  39. PushButton *m_open = nullptr;
  40. PushButton *m_delete = nullptr;
  41. QVBoxLayout *m_layout = nullptr;
  42. QHBoxLayout *m_nameLayout = nullptr;
  43. QHBoxLayout *m_taskLayout = nullptr;
  44. QHBoxLayout *m_typeLayout = nullptr;
  45. QHBoxLayout *m_buttonLayout = nullptr;
  46. };
  47. /// 工程列表
  48. class ProjectListWidget : public QWidget
  49. {
  50. Q_OBJECT
  51. public:
  52. explicit ProjectListWidget(QWidget *parent = nullptr);
  53. void setProjects(QList<ProjectInfo *> list);
  54. void showLast() const;
  55. void addProject(ProjectInfo *proj);
  56. void removeProject(ProjectInfo *proj);
  57. ProjectListItemWidget *widgetOfItem(QListWidgetItem *item) const;
  58. QListWidgetItem *itemOfWidget(ProjectListItemWidget *widget) const;
  59. signals:
  60. void sigInfo(ProjectInfo *project);
  61. void sigOpen(ProjectInfo *project);
  62. void sigDelete(ProjectInfo *project);
  63. private:
  64. void initWidgets();
  65. void initLayout();
  66. void connectSiganlsAndSlots();
  67. private slots:
  68. void slotItemDoubleClicked(QListWidgetItem *item);
  69. void slotItemClicked(QListWidgetItem *item);
  70. void slotCurrentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
  71. void slotCurrentRowChanged(int currentRow);
  72. void slotItemSelectionChanged();
  73. void slotInfo();
  74. void slotOpen();
  75. void slotDelete();
  76. signals:
  77. private:
  78. QVBoxLayout *m_vBoxLayout = nullptr;
  79. QListWidget *m_listWidget = nullptr;
  80. QList<ProjectInfo *> m_projList;
  81. };
  82. #endif // PROJECTLISTWIDGET_H