#ifndef MAINWIDGET_H #define MAINWIDGET_H #include #include #include #include #include #include "src/xml_opr.h" #include "src/config.h" #include "src/attribute_edit.h" QT_BEGIN_NAMESPACE namespace Ui { class MainWidget; } QT_END_NAMESPACE class MainWidget : public QWidget { Q_OBJECT public: MainWidget(QWidget* parent = nullptr); ~MainWidget(); public: void set_work_exe(char* path); void generate_table_widget(); void push_content(const std::vector& eles, std::size_t page = 1); private: void read(const QString& file_path); void search(); void item_changed_handle(QTableWidgetItem* item); void save(); void copy_select_line(); void insert_one_line(Element_t* ele, int row); void del_select_line(); void reset(); void judge_btn_page(); void copy_key(); bool edit_property(Element_t* target, int row); void init_menu(); void ele_update_gui(Element_t* target, int row); void show_custom_menu(); protected: void closeEvent(QCloseEvent* event); void keyPressEvent(QKeyEvent* event); private: Element_t* get_element_bykey(const QString& key); Element_t* get_current_select_key(); QTableWidgetItem* get_current_select_item(); private: QMenu* context_menu_{}; QAction* ac_edit_property_{}; QAction* ac_copy_curline_{}; QAction* ac_del_curline_{}; QAction* ac_copy_key_{}; Ui::MainWidget* ui; ConfigIni ini_{}; CXmlOpr xml_{}; std::string exe_path_{}; QTableWidget* tab_widget_{}; std::vector vec_{}; std::vector current_{}; std::vector keys_{}; std::vector width_{}; bool auto_add_{false}; std::size_t cur_page_{1}; std::size_t all_page_{1}; CAttributeEdit* attri_edit_{}; OprBase base_{}; }; #endif // MAINWIDGET_H