Spec-Zone.ru › Qt 5.12

Класс QMenuBar

Класс QMenuBar предоставляет горизонтальную строку меню. Подробнее...

Заголовок: #include <QMenuBar>
qmake: QT += widgets
Наследует: QWidget
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Свойства

  • defaultUp : bool
  • nativeMenuBar : bool
  • 59 свойств унаследовано от QWidget
  • 1 свойство унаследовано от QObject

Открытые функции

QMenuBar(QWidget *parent = nullptr)
virtual ~QMenuBar()
QAction * actionAt(const QPoint &pt) const
QRect actionGeometry(QAction *act) const
QAction * activeAction() const
QAction * addAction(const QString &text)
QAction * addAction(const QString &text, const QObject *receiver, const char *member)
QAction * addAction(const QString &text, const Obj *receiver, PointerToMemberFunctionOrFunctor method)
QAction * addAction(const QString &text, Functor functor)
QAction * addMenu(QMenu *menu)
QMenu * addMenu(const QString &title)
QMenu * addMenu(const QIcon &icon, const QString &title)
QAction * addSeparator()
void clear()
QWidget * cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const
QAction * insertMenu(QAction *before, QMenu *menu)
QAction * insertSeparator(QAction *before)
bool isDefaultUp() const
bool isNativeMenuBar() const
void setActiveAction(QAction *act)
void setCornerWidget(QWidget *widget, Qt::Corner corner = Qt::TopRightCorner)
void setDefaultUp(bool)
void setNativeMenuBar(bool nativeMenuBar)
NSMenu * toNSMenu()

Переопределённые открытые функции

virtual int heightForWidth(int) const override
virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override
  • 214 открытых функций унаследовано от QWidget
  • 31 открытых функций унаследовано от QObject
  • 14 открытых функций унаследовано от QPaintDevice

Открытые слоты

virtual void setVisible(bool visible) override
  • 19 открытых слотов унаследовано от QWidget
  • 1 открытый слот унаследовано от QObject

Сигналы

void hovered(QAction *action)
void triggered(QAction *action)
  • 3 сигнала унаследовано от QWidget
  • 2 сигнала унаследовано от QObject

Статические открытые члены

const QMetaObject staticMetaObject
  • 5 статических открытых членов унаследовано от QWidget
  • 9 статических открытых членов унаследовано от QObject

Защищённые функции

void initStyleOption(QStyleOptionMenuItem *option, const QAction *action) const

Переопределённые защищённые функции

виртуальный void actionEvent(QActionEvent *e) override
виртуальный void changeEvent(QEvent *e) override
виртуальный bool event(QEvent *e) override
виртуальный bool eventFilter(QObject *object, QEvent *event) override
виртуальный void focusInEvent(QFocusEvent *) override
виртуальный void focusOutEvent(QFocusEvent *) override
виртуальный void keyPressEvent(QKeyEvent *e) override
виртуальный void leaveEvent(QEvent *) override
виртуальный void mouseMoveEvent(QMouseEvent *e) override
виртуальный void mousePressEvent(QMouseEvent *e) override
виртуальный void mouseReleaseEvent(QMouseEvent *e) override
виртуальный void paintEvent(QPaintEvent *e) override
виртуальный void resizeEvent(QResizeEvent *) override
виртуальный void timerEvent(QTimerEvent *e) override
  • 35 защищённых функций, унаследованных от QWidget
  • 9 защищённых функций, унаследованных от QObject
  • 1 защищённая функция, унаследованная от QPaintDevice

Дополнительные унаследованные члены

  • 1 защищённый слот, унаследованный от QWidget

Подробное описание

Класс QMenuBar предоставляет горизонтальную строку меню.

Строка меню состоит из списка выпадающих пунктов меню. Вы добавляете пункты меню с помощью addMenu(). Например, предполагая, что menubar — указатель на QMenuBar, а fileMenu — указатель на QMenu, следующая строка вставляет меню в строку меню:

menubar->addMenu(fileMenu);

Знак амперсанда в тексте пункта меню задаёт Alt+F в качестве сочетания клавиш для этого меню. (Вы можете использовать "&&", чтобы получить настоящий знак амперсанда в строке меню.)

Размещение строки меню не требуется. Она автоматически устанавливает свою геометрию в верхней части родительского виджета и соответствующим образом изменяет её при изменении размера родительского виджета.

Использование

В большинстве приложений со стилем главного окна вы будете использовать функцию menuBar(), предоставляемую в QMainWindow, добавляя QMenu в строку меню и добавляя QAction в всплывающие меню.

Пример (из примера Меню):

    fileMenu = menuBar()->addMenu(tr("&File"));
    fileMenu->addAction(newAct);

Пункты меню можно удалить с помощью removeAction().

Виджеты можно добавлять в меню, используя экземпляры класса QWidgetAction для их хранения. Эти действия затем можно вставлять в меню обычным образом; см. документацию по QMenu для получения дополнительной информации.

Платформенно-зависимый вид и поведение

Разные платформы имеют разные требования к внешнему виду строк меню и их поведению при взаимодействии пользователя. Например, системы Windows часто настраиваются таким образом, что подчёркнутые символы-мнемоники, указывающие сочетания клавиш для пунктов в строке меню, отображаются только при нажатой клавише Alt.

QMenuBar в качестве глобальной строки меню

В macOS и в некоторых средах рабочего стола Linux, таких как Ubuntu Unity, QMenuBar является оболочкой для использования глобальной строки меню системы. Если у вас есть несколько строк меню в одном диалоговом окне, внешняя строка меню (обычно внутри виджета со флагом виджета Qt::Window) будет использоваться для глобальной строки меню системы.

Qt для macOS также предоставляет функцию объединения строки меню, чтобы сделать QMenuBar более соответствующим принятой структуре строки меню macOS. Функциональность объединения основана на сопоставлении строк с заголовком пункта QMenu. Эти строки переводятся (с помощью QObject::tr()) в контексте "QMenuBar". Если пункт перемещается, его слоты по-прежнему будут срабатывать так, как если бы он был на исходном месте. Таблица ниже описывает искомые строки и местоположение пункта в случае совпадения:

Строка совпадает Расположение Примечания
about.* Меню приложения | О <название приложения> Название приложения извлекается из файла Info.plist (см. примечание ниже). Если этот пункт не найден, пункт "О" в меню приложения не отобразится.
config, options, setup, settings или preferences Меню приложения | Настройки Если этот пункт не найден, пункт "Настройки" будет отключён
quit или exit Меню приложения | Выход из <название приложения> Если этот пункт не найден, будет создан стандартный пункт "Выход" для вызова QCoreApplication::quit()

Вы можете переопределить это поведение, используя свойство QAction::menuRole().

Если вы хотите, чтобы все окна приложения Mac использовали одну строку меню, вы должны создать строку меню без родителя. Создайте строку меню без родителя таким образом:

QMenuBar *menuBar = new QMenuBar(0);

Примечание: Не используйте QMainWindow::menuBar() для создания общей строки меню, потому что эта строка меню будет иметь QMainWindow в качестве родителя. Эта строка меню будет отображаться только для родительского QMainWindow.

Примечание: Текст, используемый для названия приложения в строке меню macOS, извлекается из значения, заданного в файле Info.plist в пакете приложения. См. Qt для macOS — Развёртывание для получения дополнительной информации.

Примечание: В Linux, если служба com.canonical.AppMenu.Registrar доступна на шине D-Bus сеанса, Qt будет взаимодействовать с ней, чтобы установить меню приложения в глобальную строку меню, как описано.

Примеры

Пример Меню демонстрирует, как использовать QMenuBar и QMenu. Другие примеры приложений главного окна приложений главного окна также предоставляют меню с использованием этих классов.

См. также QMenu, QShortcut, QAction, Введение в Руководство по интерфейсам Apple, Справочник по проектированию графического интерфейса: Строка меню и Пример меню.

Документация по свойству

defaultUp : bool

Это свойство содержит ориентацию всплывающего меню

Стандартная ориентация всплывающего меню. По умолчанию меню всплывает "вниз" по экрану. Установив свойство в true, меню будет всплывать "вверх". Вы можете использовать это для меню, которое находится ниже документа, к которому оно относится.

Если меню не помещается на экране, другая ориентация используется автоматически.

Функции доступа:

bool isDefaultUp() const
void setDefaultUp(bool)

nativeMenuBar : bool

Это свойство указывает, будет ли использоваться строка меню как родная строка меню на платформах, которые её поддерживают

Это свойство определяет, будет ли использоваться строка меню как родная строка меню на платформах, которые её поддерживают. В настоящее время поддерживаются платформы macOS и рабочие столы Linux, которые используют интерфейс D-Bus com.canonical.dbusmenu (например, Ubuntu Unity). Если это свойство равно true, строка меню используется в родной строке меню и не находится в окне своего родителя; если false, строка меню остаётся в окне. На других платформах установка этого атрибута не оказывает никакого влияния, и чтение этого атрибута всегда вернёт false.

По умолчанию поведение соответствует наличию (или отсутствию) атрибута Qt::AA_DontUseNativeMenuBar для приложения. Явное задание этого свойства переопределяет наличие (или отсутствие) атрибута.

Это свойство было введено в Qt 4.6.

Функции доступа:

bool isNativeMenuBar() const
void setNativeMenuBar(bool nativeMenuBar)

Документация по членам-функциям

QMenuBar::QMenuBar(QWidget *parent = nullptr)

Создаёт строку меню с родителем parent.

[virtual] QMenuBar::~QMenuBar()

Удаляет строку меню.

QAction *QMenuBar::actionAt(const QPoint &pt) const

Возвращает QAction по координатам pt. Возвращает nullptr если в указанном месте нет действия или находится разделитель.

См. также addAction() и addSeparator().

[override virtual protected] void QMenuBar::actionEvent(QActionEvent *e)

Переопределено из QWidget::actionEvent().

QRect QMenuBar::actionGeometry(QAction *act) const

Возвращает геометрию действия act как QRect.

См. также actionAt().

QAction *QMenuBar::activeAction() const

Возвращает QAction, который в данный момент выделен. Возвращает null, если действие не выбрано.

См. также setActiveAction().

QAction *QMenuBar::addAction(const QString &text)

Эта функция-удобство создаёт новое действие с текстом text. Функция добавляет созданное действие в список действий меню и возвращает его.

См. также QWidget::addAction() и QWidget::actions().

QAction *QMenuBar::addAction(const QString &text, const QObject *receiver, const char *member)

Это перегруженная функция.

Эта функция-удобство создаёт новое действие с заданным текстом text. Сигнал triggered() действия подключается к слоту member объекта receiver. Функция добавляет созданное действие в список действий меню и возвращает его.

См. также QWidget::addAction() и QWidget::actions().

QAction *QMenuBar::addAction(const QString &text, const Obj *receiver, PointerToMemberFunctionOrFunctor method)

Это перегруженная функция.

Эта функция-удобство создаёт новое действие с заданным текстом text. Сигнал triggered() действия подключается к методу method объекта receiver. Функция добавляет созданное действие в список действий меню и возвращает его.

QMenuBar получает владение возвращаемым QAction.

Функция была добавлена в Qt 5.11.

См. также QWidget::addAction() и QWidget::actions().

QAction *QMenuBar::addAction(const QString &text, Functor functor)

Это перегруженная функция.

Эта функция-удобство создаёт новое действие с заданным текстом text. Сигнал triggered() действия подключается к functor. Функция добавляет созданное действие в список действий меню и возвращает его.

QMenuBar получает владение возвращаемым QAction.

Функция была добавлена в Qt 5.11.

См. также QWidget::addAction() и QWidget::actions().

QAction *QMenuBar::addMenu(QMenu *menu)

Добавляет menu в строку меню. Возвращает menuAction() меню.

Примечание: Возвращаемый объект QAction может быть использован для скрытия соответствующего меню.

См. также QWidget::addAction() и QMenu::menuAction().

QMenu *QMenuBar::addMenu(const QString &title)

Добавляет новое QMenu с заголовком title в строку меню. Строка меню получает владение новым меню. Возвращает созданное меню.

См. также QWidget::addAction() и QMenu::menuAction().

QMenu *QMenuBar::addMenu(const QIcon &icon, const QString &title)

Добавляет новое QMenu с иконкой icon и заголовком title в строку меню. Строка меню получает владение новым меню. Возвращает созданное меню.

См. также QWidget::addAction() и QMenu::menuAction().

QAction *QMenuBar::addSeparator()

Добавляет разделитель в меню.

[override virtual protected] void QMenuBar::changeEvent(QEvent *e)

Переопределено из QWidget::changeEvent().

void QMenuBar::clear()

Удаляет все действия из строки меню.

Примечание: На macOS, пункты меню, которые были объединены в системное меню, не удаляются этой функцией. Один из способов решения этой проблемы — удалить дополнительные действия самостоятельно. Можно установить роль меню для разных меню, чтобы заранее знать, какие пункты меню будут объединены, а какие нет. Затем самостоятельно решить, что пересоздавать, а что удалять.

См. также removeAction().

QWidget *QMenuBar::cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const

Возвращает виджет, расположенный слева от первого или справа от последнего пункта меню в зависимости от corner.

Примечание: Использование любого угла, кроме Qt::TopRightCorner или Qt::TopLeftCorner, приведёт к выводу предупреждения.

См. также setCornerWidget().

[override virtual protected] bool QMenuBar::event(QEvent *e)

Переопределено из QWidget::event().

[override virtual protected] bool QMenuBar::eventFilter(QObject *object, QEvent *event)

Переопределено из QObject::eventFilter().

[override virtual protected] void QMenuBar::focusInEvent(QFocusEvent *)

Переопределено из QWidget::focusInEvent().

[override virtual protected] void QMenuBar::focusOutEvent(QFocusEvent *)

Переопределено из QWidget::focusOutEvent().

[override virtual] int QMenuBar::heightForWidth(int) const

Переопределено из QWidget::heightForWidth().

[signal] void QMenuBar::hovered(QAction *action)

Этот сигнал испускается при выделении пункта меню; action — действие, которое вызвало событие.

Часто используется для обновления информации состояния.

См. также triggered() и QAction::hovered().

[protected] void QMenuBar::initStyleOption(QStyleOptionMenuItem *option, const QAction *action) const

Инициализирует option значениями из строки меню и информацией из action. Этот метод полезен для подклассов, когда им нужен QStyleOptionMenuItem, но они не хотят заполнять всю информацию сами.

См. также QStyleOption::initFrom() и QMenu::initStyleOption().

QAction *QMenuBar::insertMenu(QAction *before, QMenu *menu)

Эта функция-удобство вставляет menu перед действием before и возвращает menuAction() меню.

См. также QWidget::insertAction() и addMenu().

QAction *QMenuBar::insertSeparator(QAction *before)

Эта вспомогательная функция создаёт новую разделительную действие, т. е. действие с QAction::isSeparator() возвращающим true. Функция вставляет вновь созданное действие в список действий этой панели меню перед действием before и возвращает его.

См. также QWidget::insertAction() и addSeparator().

[override virtual protected] void QMenuBar::keyPressEvent(QKeyEvent *e)

Переопределено из QWidget::keyPressEvent().

[override virtual protected] void QMenuBar::leaveEvent(QEvent *)

Переопределено из QWidget::leaveEvent().

[override virtual] QSize QMenuBar::minimumSizeHint() const

Переопределено из QWidget::minimumSizeHint().

[override virtual protected] void QMenuBar::mouseMoveEvent(QMouseEvent *e)

Переопределено из QWidget::mouseMoveEvent().

[override virtual protected] void QMenuBar::mousePressEvent(QMouseEvent *e)

Переопределено из QWidget::mousePressEvent().

[override virtual protected] void QMenuBar::mouseReleaseEvent(QMouseEvent *e)

Переопределено из QWidget::mouseReleaseEvent().

[override virtual protected] void QMenuBar::paintEvent(QPaintEvent *e)

Переопределено из QWidget::paintEvent().

[override virtual protected] void QMenuBar::resizeEvent(QResizeEvent *)

Переопределено из QWidget::resizeEvent().

void QMenuBar::setActiveAction(QAction *act)

Устанавливает текущее выделенное действие в act.

Эта функция была добавлена в Qt 4.1.

См. также activeAction().

void QMenuBar::setCornerWidget(QWidget *widget, Qt::Corner corner = Qt::TopRightCorner)

Это устанавливает указанный widget для отображения непосредственно слева от первого элемента меню или справа от последнего элемента меню, в зависимости от corner.

Панель меню принимает владение widget, переродив его в панель меню. Однако, если corner уже содержит виджет, этот предыдущий виджет больше не будет управляться и по-прежнему будет видимым дочерним элементом панели меню.

Примечание: Использование угла, отличного от Qt::TopRightCorner или Qt::TopLeftCorner, приведёт к предупреждению.

См. также cornerWidget().

[override virtual slot] void QMenuBar::setVisible(bool visible)

Переопределено из QWidget::setVisible().

[override virtual] QSize QMenuBar::sizeHint() const

Переопределено из QWidget::sizeHint().

[override virtual protected] void QMenuBar::timerEvent(QTimerEvent *e)

Переопределено из QObject::timerEvent().

NSMenu *QMenuBar::toNSMenu()

Возвращает родной NSMenu для этой панели меню. Доступно только на macOS.

Примечание: Qt может установить делегата на родной панели меню. Если вам нужно установить собственного делегата, убедитесь, что вы сохранили исходный и передали все вызовы в него.

Эта функция была добавлена в Qt 5.2.

[signal] void QMenuBar::triggered(QAction *action)

Этот сигнал генерируется, когда действие в меню, принадлежащем этой панели меню, запускается в результате щелчка мышью; action — действие, которое вызвало генерацию сигнала.

Примечание: QMenuBar должен владеть QMenu для работы этого сигнала.

Обычно вы подключаете каждое действие меню к одному слоту с помощью QAction::triggered(), но иногда вам нужно подключить несколько элементов к одному слоту (чаще всего, если пользователь выбирает из массива). Этот сигнал полезен в таких случаях.

См. также hovered() и QAction::triggered().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qmenubar.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API