QsTableWidget.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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 "QsIcon.h"
  8. #include "QsHeaderView.h"
  9. #include "yqt/tablewidget.h"
  10. #include "QsScrollBar.h"
  11. class QsTableWidget;
  12. class QsTableWidgetItem
  13. {
  14. public:
  15. QsTableWidgetItem(QTableWidgetItem* item = nullptr,QsTableWidget* parent = nullptr, bool create = true);
  16. ~QsTableWidgetItem();
  17. QTableWidgetItem* item() { return m_item; }
  18. int row();
  19. bool empty() { return m_item == nullptr; }
  20. void setIcon(QsIcon icon);
  21. void setColor(const std::string& hex);
  22. friend class QsTableWidget;
  23. private:
  24. static void regist(kaguya::State& T);
  25. private:
  26. void setText(const std::string& text);
  27. private:
  28. QTableWidgetItem* m_item = nullptr;
  29. };
  30. class QsTableWidget :public ylib::qt::TableWidget,public QsElement
  31. {
  32. public:
  33. QsTableWidget(QsWidget* parent = nullptr);
  34. ~QsTableWidget();
  35. static void regist(kaguya::State& T);
  36. private:
  37. void setSelectionBehavior(int value);
  38. void setSelectionMode(int value);
  39. void setEditTriggers(int value);
  40. void setItem(int row, int column, QsTableWidgetItem* item);
  41. void setHorizontalHeaderLabels(const kaguya::LuaTable& labels);
  42. void setCellWidget(int row,int column,QsWidget* widget);
  43. QsHeaderView horizontalHeader();
  44. QsHeaderView verticalHeader();
  45. QsScrollBar verticalScrollBar();
  46. QsScrollBar horizontalScrollBar();
  47. void onItemClicked(kaguya::LuaFunction callback);
  48. QsTableWidgetItem currentItem();
  49. void setCurrentItem(QsTableWidgetItem item);
  50. QsTableWidgetItem item(int row,int column);
  51. kaguya::LuaFunction itemClickedEvent() { return m_onItemClicked; }
  52. void onLeave(kaguya::LuaFunction callback) { m_onLeave = callback; }
  53. void onEnter(kaguya::LuaFunction callback) { m_onEnter = callback; }
  54. void initEvent();
  55. // 通过 QsElement 继承
  56. virtual QsWidget* toQ() override{ return appQs(new QsWidget(this)); }
  57. private:
  58. //bool eventFilter(QObject* object, QEvent* event) override;
  59. private:
  60. kaguya::LuaFunction m_onItemClicked;
  61. kaguya::LuaFunction m_onLeave;
  62. kaguya::LuaFunction m_onEnter;
  63. QTableWidgetItem* m_lastItem = nullptr;
  64. };