53 lines
985 B
C++
53 lines
985 B
C++
#pragma once
|
|
|
|
#include <QMap>
|
|
|
|
#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<typename T>
|
|
T* GetMenuManager(const QString& name) {
|
|
QWidget* widget = GetMenuWidget(name);
|
|
if (widget) {
|
|
T* t = qobject_cast<T*>(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<class QPushButton*, int>;
|
|
MenuWidget menuWidget_;
|
|
};
|