#pragma once #include #include "FramelessWindow.h" namespace Ui { class MainFrame; } class QLineEdit; class MainFrame : public FramelessWindow { Q_OBJECT public: explicit MainFrame(QWidget *parent = nullptr); ~MainFrame(); static MainFrame& Get(); template T* GetMenuManager(const QString& name) { QWidget* widget = GetMenuWidget(name); if (widget) { T* t = qobject_cast(widget); if (t) { return t; } } return nullptr; } protected: void paintEvent(QPaintEvent* event) override; protected: void OnMenuTrigged(); void SetCurrentMenu(int index); private: void InitUI(); void AddMenuWidget(const QString& name, const QString& text, QWidget* widget); QWidget* GetMenuWidget(const QString& name); private: Ui::MainFrame* ui; using MenuWidget = QMap; MenuWidget menuWidget_; };