Potrzebuje menu które działa trochę inaczej:
domyślnie jest niewidoczne , ale można je wyświetlić.
Klasa Menu0 ma wszystkie metody statyczne [koncept możliwe ze błędny]
Menu0 tworzy obiekt GUI (nowe okno z MENU) za pomocą "LAMBDA" w metodzie execute(...) [chciałem aby okno tworzyło się tylko wtedy gdy jest potrzebne]
Tylko że jest drobny problem bo te dodatkowe okno przechowywane w instance_menu_gui
nie ma wywołanego destruktora przy zamykaniu aplikacji bo ma ustawiony parent(nullptr)
Wiec się zastanawiam jak takie obiekty SIEROTY zwalniać
// klasa bazowa dla wizualizacji MENU (okno które zawiera menu i będzie rysowane tylko menu)
typedef QMainWindow IMenu0_GUI;
// typ dla lambdy
typedef std::function<IMenu0_GUI*()> fu_create_Menu0_GUI;
// klasa do sterowania widocznością MENU
class Menu0
{
private:
inline static fu_create_Menu0_GUI create_Menu0_GUI{0};
inline static IMenu0_GUI * instance_menu_gui{nullptr};
pubic:
static void Close(void)
{
if(instance_menu_gui)
{
instance_menu_gui->close();
instance_menu_gui->setParent(nullptr);
}
}
static bool Visible(void)
static bool Execute(QWidget *parent)
{
if(create_Menu0_GUI)
{
instance_menu_gui = create_Menu0_GUI();
}
if(!instance_menu_gui) return false;
instance_menu_gui->setParent(parent);
..... RESZTA
}
//////////////////////////////////////////////
static void RegisterMenu(fu_create_Menu0_GUI fu){
create_Menu0_GUI = fu;
}
}
kompletny kod https://github.com/mariuszmaximus/menu0