ProjectListWidget.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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(int index, QWidget *parent = nullptr);
  20. void setInfo(ProjectInfo *info);
  21. int index() const;
  22. ProjectInfo *info() const;
  23. signals:
  24. void sigOpen();
  25. void sigEdit();
  26. private:
  27. void initWidgets();
  28. void initLayout();
  29. void connectSignalsAndSlots();
  30. private:
  31. int m_index = 0;
  32. ProjectInfo *m_info = nullptr;
  33. QLabel *m_name = nullptr;
  34. QLabel *m_time = nullptr;
  35. QLabel *m_taskLabel = nullptr;
  36. QLabel *m_task = nullptr;
  37. QLabel *m_typeLabel = nullptr;
  38. QLabel *m_type = nullptr;
  39. PushButton *m_edit = nullptr;
  40. PushButton *m_open = 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 showProjects(QList<ProjectInfo *> list);
  54. ProjectListItemWidget *itemWidget(QListWidgetItem *item) const;
  55. signals:
  56. void sigOpen(ProjectInfo *project);
  57. void sigEdit(ProjectInfo *project);
  58. private:
  59. void initWidgets();
  60. void initLayout();
  61. void connectSiganlsAndSlots();
  62. private slots:
  63. void slotItemDoubleClicked(QListWidgetItem *item);
  64. void slotItemClicked(QListWidgetItem *item);
  65. void slotCurrentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
  66. void slotCurrentRowChanged(int currentRow);
  67. void slotItemSelectionChanged();
  68. void slotOpen();
  69. void slotEdit();
  70. signals:
  71. private:
  72. QVBoxLayout *m_vBoxLayout = nullptr;
  73. QListWidget *m_listWidget = nullptr;
  74. };
  75. #endif // PROJECTLISTWIDGET_H