#ifndef NUCLIDELIBMANAGE_H #define NUCLIDELIBMANAGE_H #include #include #include #include #include namespace Ui { class NuclideLibManage; } class ButtonDelegate : public QStyledItemDelegate { Q_OBJECT public: explicit ButtonDelegate(QObject *parent = nullptr); void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index) override; signals: void buttonClicked(const QModelIndex &index) const; }; class NuclideLibManage : public QWidget { Q_OBJECT public: explicit NuclideLibManage(QWidget *parent = nullptr); ~NuclideLibManage(); private slots: void on_pushButton_add_clicked(); void on_pushButton_edit_clicked(); void on_pushButton_del_clicked(); void onButtonClicked(const QModelIndex &index); // 响应委托按钮点击 private: void loadNuclideData(); QStringList getNuclideData(const QString &id); Ui::NuclideLibManage *ui; QStandardItemModel *m_model; ButtonDelegate *m_delegate; QVector m_listNuclide; // 缓存原始核素数据(ID + 各字段) }; #endif // NUCLIDELIBMANAGE_H