#ifndef MAINWIDGET_H #define MAINWIDGET_H #include <QWidget> #include <QTableWidget> #include <QMenu> #include <QAction> #include <QMessageBox> #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<Element_t*>& eles, std::size_t page = 1); private: void read(); 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); void init_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<Element_t*> vec_{}; std::vector<Element_t*> current_{}; std::vector<std::string> keys_{}; std::vector<int> width_{}; bool auto_add_{false}; std::size_t cur_page_{1}; std::size_t all_page_{1}; CAttributeEdit* attri_edit_{}; }; #endif // MAINWIDGET_H