C++ (Qt)struct MenuItem { MenuItem * mParent, * mPrev, * mNext; const char * mName; // item's name int flags; // enabled, checked etc CallbackProc proc; ...}; // RebuildMenu замещает все меню (от корня) на новоеvoid RebuildMenu( MenuItem * root ); // AdjustMenu пробегается по всему дереву и синхронизирует каждый айтем (изменился текст и/или флаги) void AdjustMenu( MenuItem * root );
C++ (Qt)struct MenuItem { MenuItem * mParent, * mPrev, * mNext; QAction *mAction; ...};