QsListWidget.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #pragma once
  2. #include <QtWidgets/qwidget.h>
  3. #include <string>
  4. #include <Kaguya/kaguya.hpp>
  5. #include "QsElement.h"
  6. #include "QsWidget.h"
  7. #include "QsScrollBar.h"
  8. #include "yqt/listwidget.h"
  9. class QsListWidget;
  10. class QsHeaderView;
  11. class QsListWidgetItem
  12. {
  13. public:
  14. QsListWidgetItem(QListWidgetItem* item, QsListWidget* parent = nullptr,bool create = true);
  15. ~QsListWidgetItem();
  16. QListWidgetItem* item() { return m_item; }
  17. friend class QsListWidget;
  18. bool empty() { return m_item == nullptr; }
  19. private:
  20. static void regist(kaguya::State& T);
  21. private:
  22. void setText(const std::string& title);
  23. std::string text();
  24. void setIntData(int role,int data);
  25. void setStringData(int role, const std::string& data);
  26. std::string stringData(int role);
  27. int intData(int role);
  28. void setExpanded(bool expand);
  29. void setTextColor(const std::string& hex_color_text);
  30. void setHeight(int height);
  31. void setTextAlignment(int value);
  32. private:
  33. QListWidgetItem* m_item = nullptr;
  34. };
  35. class QsListWidget :public ylib::qt::ListWidget,public QsElement
  36. {
  37. public:
  38. QsListWidget(QsWidget* parent = nullptr);
  39. ~QsListWidget();
  40. static void regist(kaguya::State& T);
  41. private:
  42. void setItemWidget(QsListWidgetItem* item,QsWidget* widget);
  43. void onItemClicked(kaguya::LuaFunction callback);
  44. void setSelectionMode(int mod);
  45. QsScrollBar verticalScrollBar();
  46. QsScrollBar horizontalScrollBar();
  47. QsListWidgetItem currentItem();
  48. void remove(QsListWidgetItem item);
  49. void addItem(QsListWidgetItem item);
  50. // 通过 QsElement 继承
  51. virtual QsWidget* toQ() override{ return appQs(new QsWidget(this)); }
  52. private:
  53. kaguya::LuaFunction m_onItemClicked;
  54. };