Spec-Zone.ru › Qt 5.11

Класс 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)

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

virtual int heightForWidth(int) const override
virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override
  • 214 открытых функций унаследовано от QWidget
  • 34 открытых функции унаследовано от 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

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

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

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

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

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

  • 1 Переменная public, унаследованная от QObject
  • 5 Статические public члены, унаследованные от QWidget
  • 10 Статические public члены, унаследованные от QObject
  • 1 Защищённый слот, унаследованный от QWidget
  • 2 Защищённые переменные, унаследованные от QObject
  • 1 Защищённый тип, унаследованный от QPaintDevice

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

Класс 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 or preferences Меню приложения | Настройки Если эта запись не найдена, пункт "Настройки" будет отключён
quit or 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. Возвращает 0, если в точке pt нет действия или в этом месте разделитель.

См. также 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 &текст, const QObject *получатель, const char *член)

Это перегруженный метод.

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

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

QAction *QMenuBar::addAction(const QString &текст, const Obj *получатель, PointerToMemberFunctionOrFunctor метод)

Это перегруженный метод.

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

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

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

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

QAction *QMenuBar::addAction(const QString &текст, Functor функтор)

Это перегруженный метод.

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

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

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

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

QAction *QMenuBar::addMenu(QMenu *меню)

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

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

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

QMenu *QMenuBar::addMenu(const QString &заголовок)

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

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

QMenu *QMenuBar::addMenu(const QIcon &иконка, const QString &заголовок)

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

См. также 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 угол = Qt::TopRightCorner) const

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

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

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

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

Переопределяет QWidget::event().

[override virtual protected] bool QMenuBar::eventFilter(QObject *объект, QEvent *событие)

Переопределяет 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 *действие)

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

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

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

[protected] void QMenuBar::initStyleOption(QStyleOptionMenuItem *опция, const QAction *действие) const

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

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

QAction *QMenuBar::insertMenu(QAction *перед, QMenu *меню)

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

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

QAction *QMenuBar::insertSeparator(QAction *перед)

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

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

[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/archives/qt-5.11/qmenubar.html

Spec-Zone.ru

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