Spec-Zone.ru › Qt 5.11

Класс QMacCocoaViewContainer

Класс QMacCocoaViewContainer предоставляет виджет для macOS, который может быть использован для обертывания произвольных Cocoa-виджетов (т.е., подклассов NSView) и их вставки в иерархии Qt. Подробнее...

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

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

QMacCocoaViewContainer(NSView *view, QWidget *parent = nullptr)
виртуальный ~QMacCocoaViewContainer()
NSView * cocoaView() const
void setCocoaView(NSView *view)
  • 214 открытых функций, унаследованных от QWidget
  • 34 открытых функций, унаследованных от QObject
  • 14 открытых функций, унаследованных от QPaintDevice

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

  • 59 свойств, унаследованных от QWidget
  • 1 свойство, унаследованное от QObject
  • 19 открытых слотов, унаследованных от QWidget
  • 1 открытый слот, унаследованный от QObject
  • 3 сигналов, унаследованных от QWidget
  • 2 сигналов, унаследованных от QObject
  • 1 открытой переменной, унаследованной от QObject
  • 5 статических открытых членов, унаследованных от QWidget
  • 10 статических открытых членов, унаследованных от QObject
  • 35 защищенных функций, унаследованных от QWidget
  • 9 защищенных функций, унаследованных от QObject
  • 1 защищенная функция, унаследованная от QPaintDevice
  • 1 защищенный слот, унаследованный от QWidget
  • 2 защищенных переменных, унаследованных от QObject
  • 1 защищенный тип, унаследованный от QPaintDevice

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

Класс QMacCocoaViewContainer предоставляет виджет для macOS, который может быть использован для обертывания произвольных Cocoa-виджетов (т.е., подклассов NSView) и их вставки в иерархии Qt.

Хотя Qt предлагает множество классов для написания вашего приложения, фреймворки Cocoa от Apple предлагают функциональность, которая в настоящее время недоступна (или может никогда не появиться) в Qt. Используя QMacCocoaViewContainer, можно взять произвольный класс, производный от NSView из Cocoa, и поместить его в иерархию виджетов Qt. В зависимости от требуемой степени интеграции, вы можете использовать QMacCocoaViewContainer напрямую или наследовать от него, чтобы обернуть больше функциональности базового NSView.

Следует также отметить, что на уровне Cocoa существует различие между окнами верхнего уровня и виджетами (виджетами, которые находятся внутри окна). По этой причине убедитесь, что NSView, который вы обертываете, не становится окном верхнего уровня. Лучший способ гарантировать это - убедиться, что родительский виджет QMacCocoaViewContainer не равен null.

Если вы используете QMacCocoaViewContainer в качестве подкласса и обращаетесь к API Cocoa, вероятно, проще завершить свой файл с .mm вместо .cpp. Большинство инструментов Apple правильно идентифицируют исходный код как Objective-C++.

QMacCocoaViewContainer требует знания работы Cocoa, особенно в отношении его механизма подсчета ссылок (retain/release). В функциях ниже отмечается, если происходит изменение счетчика ссылок. Cocoa-виджеты часто генерируют временные объекты, которые освобождаются пулом автоосвобождения. Если это выполняется вне цикла событий, разработчик должен предоставить пул автоосвобождения.

Ниже приведён фрагмент, демонстрирующий, как наследовать от QMacCocoaViewContainer, чтобы обернуть NSSearchField.

SearchWidget::SearchWidget(QWidget *parent)
    : QMacCocoaViewContainer(0, parent)
{
    // Many Cocoa objects create temporary autorelease objects,
    // so create a pool to catch them.
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    // Create the NSSearchField, set it on the QCocoaViewContainer.
    NSSearchField *search = [[NSSearchField alloc] init];
    setCocoaView(search);

    // Use a Qt menu for the search field menu.
    QMenu *qtMenu = createMenu(this);
    NSMenu *nsMenu = qtMenu->macMenu(0);
    [[search cell] setSearchMenuTemplate:nsMenu];

    // Release our reference, since our super class takes ownership and we
    // don't need it anymore.
    [search release];

    // Clean up our pool as we no longer need it.
    [pool release];
}

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

QMacCocoaViewContainer::QMacCocoaViewContainer(NSView *view, QWidget *parent = nullptr)

Создаёт новый QMacCocoaViewContainer с использованием указателя NSView в view и родителем parent. QMacCocoaViewContainer сохранит view.

[virtual] QMacCocoaViewContainer::~QMacCocoaViewContainer()

Удаляет QMacCocoaViewContainer и освобождает обернутый виджет.

NSView *QMacCocoaViewContainer::cocoaView() const

Возвращает NSView, установленный в этом контейнере.

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

void QMacCocoaViewContainer::setCocoaView(NSView *view)

Устанавливает view как NSView для содержимого и сохраняет его. Если в этом контейнере уже был установлен виджет, он освободит ранее установленный виджет.

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

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

Spec-Zone.ru

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