#pragma once #include class FrameTitleBar; class FramelessDelegate; class Dialog : public QDialog { Q_OBJECT public: Dialog(QWidget* parent); ~Dialog() override = default; void DeleteThisOnClose(); void SetTitleBar(FrameTitleBar* titleBar); void SetTitle(const QString& title); protected: void hideEvent(QHideEvent*) override; bool eventFilter(QObject*, QEvent*) override; #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) bool nativeEvent(const QByteArray& eventType, void* message, long* result) override; #else bool nativeEvent(const QByteArray& eventType, void* message, qintptr* result) override; #endif void paintEvent(QPaintEvent* event) override; protected: template void SetupUI(UI* ui) { ui->setupUi(mainDilag_); } private: void InitFrame(); private: FramelessDelegate* delegate_; QWidget* mainDilag_{ nullptr }; };