#pragma once #include #include namespace Ui { class FileSelectionWidget; } class FileSelectionWidget : public QWidget { Q_OBJECT public: enum class Mode { OpenFile, SaveFile, ExistingDirectory }; explicit FileSelectionWidget(QWidget *parent = nullptr); FileSelectionWidget(const Mode mode, QWidget *parent = nullptr); FileSelectionWidget(const Mode mode, const QString &path, QWidget *parent = nullptr); ~FileSelectionWidget() override; Mode mode() const; void setMode(const Mode mode); QString path() const; void setPath(const QString &path); signals: void pathChanged(const QString &path); private slots: void selectPath(); private: const std::unique_ptr m_ui; Mode m_mode; };