#pragma once #include #include class DataModel; class QDataWidgetMapper; namespace Ui { class MainWindow; }; class MainWindow : public QMainWindow { Q_OBJECT private: Ui::MainWindow *ui; std::unique_ptr m_dataModel; QString m_filename; bool m_saveOnClose = false; public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); public slots: void newFile(); void openFile(); void saveFile(); void saveFileAs(); void closeFile(); void dataModelChanged(); protected: void closeEvent(QCloseEvent *event) override; private: void saveFile(const QString &filename); };