Spec-Zone.ru › Qt 5.6

Класс QMenuBar

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

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

Свойства

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

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

QMenuBar(QWidget *parent = Q_NULLPTR)
~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 * 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 * defaultAction() 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 setDefaultAction(QAction *act)
void setDefaultUp(bool)
void setNativeMenuBar(bool nativeMenuBar)
NSMenu * toNSMenu()

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

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

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

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

Сигналы

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

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

void wceCommands(uint command)
void wceRefresh()
  • 5 статических открытых членов унаследовано от QWidget
  • 11 статических открытых членов унаследовано от QObject

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

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

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

virtual void actionEvent(QActionEvent *e)
virtual void changeEvent(QEvent *e)
virtual bool event(QEvent *e)
virtual bool eventFilter(QObject *object, QEvent *event)
virtual void focusInEvent(QFocusEvent *)
virtual void focusOutEvent(QFocusEvent *)
virtual void keyPressEvent(QKeyEvent *e)
virtual void leaveEvent(QEvent *)
virtual void mouseMoveEvent(QMouseEvent *e)
virtual void mousePressEvent(QMouseEvent *e)
virtual void mouseReleaseEvent(QMouseEvent *e)
virtual void paintEvent(QPaintEvent *e)
virtual void resizeEvent(QResizeEvent *)
virtual void timerEvent(QTimerEvent *e)
  • 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

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

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

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

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

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

QMenuBar *menuBar = new QMenuBar(0);

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

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

QMenuBar на Windows CE

QMenuBar на Windows CE — это оболочка для использования системной строки меню, аналогично macOS. Эта функция активирована для Windows Mobile и интегрирует QMenuBar с родными мягкими клавишами. Левая мягкая клавиша может управляться с помощью QMenuBar::setDefaultAction(), а правая мягкая клавиша может использоваться для доступа к строке меню.

Сигнал hovered() не поддерживается для интеграции родного меню. Также невозможно отобразить значок в родном меню на Windows Mobile.

Примеры

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

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

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

defaultUp : bool

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

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

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

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

bool isDefaultUp() const
void setDefaultUp(bool)

nativeMenuBar : bool

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

Это свойство указывает, следует ли использовать строку меню в качестве родной строки меню на платформах, которые её поддерживают. В настоящее время поддерживаются macOS и Windows CE. На этих платформах, если это свойство true, строка меню используется в родной строке меню и не находится в окне своего родителя; если false, строка меню остаётся в окне. На других платформах значение этого атрибута не влияет.

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

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

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

bool isNativeMenuBar() const
void setNativeMenuBar(bool nativeMenuBar)

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

QMenuBar::QMenuBar(QWidget *parent = Q_NULLPTR)

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

QMenuBar::~QMenuBar()

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

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

Возвращает QAction в позиции pt. Возвращает 0, если в позиции pt нет действия или в позиции находится разделитель.

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

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

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

QRect QMenuBar::actionGeometry(QAction *act) const

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

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

QAction *QMenuBar::activeAction() const

Возвращает QAction, который в данный момент выделен. Возвращает нулевой указатель, если сейчас не выбрано ни одного действия.

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

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

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

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

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

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

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

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

См. также 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()

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

[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().

QAction *QMenuBar::defaultAction() const

Возвращает текущее действие по умолчанию.

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

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

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

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

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

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

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

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

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

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

[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().

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

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

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

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

[virtual] QSize QMenuBar::minimumSizeHint() const

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

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

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

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

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

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

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

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

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

[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().

void QMenuBar::setDefaultAction(QAction *act)

Устанавливает действие по умолчанию на act.

Действие по умолчанию назначено для левой мягкой клавиши. Меню назначено для правой мягкой клавиши.

В настоящее время поддержка действия по умолчанию реализована только для Windows Mobile. На всех других платформах этот метод недоступен.

Данная функция была введена в Qt 4.4.

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

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

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

[virtual] QSize QMenuBar::sizeHint() const

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

[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().

[static] void QMenuBar::wceCommands(uint command)

[static] void QMenuBar::wceRefresh()

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

Spec-Zone.ru

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