Menu (gb.qt4)

This class represents a popup menu, or one element of a popup menu.

This class is creatable.

Properties
Action   Returns or sets the action string associated with the control.
Caption   A synonymous for the Text property.
Checked   Indicates if a menu is checked.
Children   Returns a collection of each child of the menu.
Closed   Return if a menu is closed.
Enabled   Indicates if the menu is enabled.
Name   Returns or sets the name of the menu control.
Parent   Return the parent of the menu, or NULL the menu is a top-level menu.
Picture   Returns or sets the icon displayed in the menu.
Proxy   Return or set the proxy of a menu.
Radio   Return or set if a menu acts like a radio button.
Shortcut   Returns or sets the shorcut key name of the menu.
Tag   Returns or sets the tag associated with the menu.
Text   Returns or sets the text displayed in the menu.
Toggle   Returns or sets if this Menu acts like a toggle.
Value   A synonymous for the Checked property.
Visible   Indicates if the menu is visible.
Window   Returns the Window this Menu belongs to.

Methods
Close   Close an opened popup menu.
Delete   Deletes the menu.
Hide   Hides a menu.
Popup   Open the menu under the mouse, and waits until it is closed.
Show   Shows the menu.

Events
Click   Raised when the user clicked on the menu.
Hide   This event is raised just after the menu has been hidden.
Show   Raised just before the menu is shown.

Creating a popup menu.

A popup menu is built by creating a hierarchy tree of Menu objects.

  • Each menu of the hierarchy having children becomes a sub-menu.

  • Each leaf of the hirerachy tree becomes a menu entry.

  • The root menu must be a top-level menu (see below).

Top-level menus

To create a top-level menu, i.e. an entry in the menu bar, the window must be the parent object of the menu.

As soon as a window has at least one visible top-level menu, the window menu bar becomes visible. Otherwise, it is hidden.

The Unity desktop removes the menu bar from the application window to put it on the top desktop panel.

Alas, it does not work well on windows that are not top-level windows, but embedded windows (like the Workspace control does).

To workaround the problem, run the following code at the very beginning of your program:
Application.Env["APPMENU_DISPLAY_BOTH"] = "1"

To create a contextual popup menu not visible on the menu bar, just set its Visible property to False.

Menu entries

Menu entries are Menu objects having no child.

Note that Menu controls do not inherit the Control class, and they do not raise any event of the Control class.

The order of menu entries in its popup parent menu follows the order of the creation.

Separators

If the Text property of a menu entry is void, then that menu entry is replaced by a separator.

Useless separators are automatically removed when the popup menu is shown.