Класс QGraphicsLayoutItem
Класс QGraphicsLayoutItem может быть унаследован, чтобы ваши пользовательские элементы могли управляться макетами. Подробнее...
| Заголовок: | #include <QGraphicsLayoutItem> |
| qmake: | QT += widgets |
| С тех пор: | Qt 4.4 |
| Наследуется от: |
Открытые функции
| QGraphicsLayoutItem(QGraphicsLayoutItem *parent = Q_NULLPTR, bool isLayout = false) | |
| virtual | ~QGraphicsLayoutItem() |
| QRectF | contentsRect() const |
| QSizeF | effectiveSizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const |
| QRectF | geometry() const |
| virtual void | getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const |
| QGraphicsItem * | graphicsItem() const |
| bool | isLayout() const |
| qreal | maximumHeight() const |
| QSizeF | maximumSize() const |
| qreal | maximumWidth() const |
| qreal | minimumHeight() const |
| QSizeF | minimumSize() const |
| qreal | minimumWidth() const |
| bool | ownedByLayout() const |
| QGraphicsLayoutItem * | parentLayoutItem() const |
| qreal | preferredHeight() const |
| QSizeF | preferredSize() const |
| qreal | preferredWidth() const |
| virtual void | setGeometry(const QRectF &rect) |
| void | setMaximumHeight(qreal height) |
Защищенные функции
| void | setGraphicsItem(QGraphicsItem *item) |
| void | setOwnedByLayout(bool ownership) |
| virtual QSizeF | sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const = 0 |
Подробное описание
Класс QGraphicsLayoutItem можно унаследовать, чтобы позволить вашим пользовательским элементам управляться макетами.
QGraphicsLayoutItem — абстрактный класс, который определяет набор виртуальных функций, описывающих размеры, политики размеров и подсказки размеров для любого объекта, размещённого с помощью QGraphicsLayout. API содержит функции, относящиеся как к самому элементу, так и к пользователю элемента, так как большинство функций QGraphicsLayoutItem также являются частью публичного API подкласса.
В большинстве случаев существующие классы, поддерживающие макеты, такие как QGraphicsWidget и QGraphicsLayout, уже предоставляют необходимую функциональность. Однако наследование этих классов позволит вам создавать как графические элементы, которые хорошо работают с макетами (QGraphicsWidget), так и пользовательские макеты (QGraphicsLayout).
Наследование от QGraphicsLayoutItem
Если вы создаёте подкласс QGraphicsLayoutItem и переопределяете его виртуальные функции, вы дадите возможность макету изменять размер и позиционировать ваш элемент вместе с другими QGraphicsLayoutItems, включая QGraphicsWidget и QGraphicsLayout.
Вы можете начать с переопределения важных функций: защищённой функции sizeHint() и публичной функции setGeometry(). Если вы хотите, чтобы ваши элементы отслеживали изменения геометрии, вы также можете переопределить updateGeometry().
Геометрия, подсказка размера и политика размера влияют на размер и позицию элемента. Вызов setGeometry() всегда немедленно изменяет размер и позицию элемента. Обычно эта функция вызывается QGraphicsLayout после активации макета, но её также может вызвать пользователь элемента в любое время.
Функция sizeHint() возвращает минимальные, предпочтительные и максимальные размеры элемента. Вы можете переопределить эти свойства, вызвав setMinimumSize(), setPreferredSize() или setMaximumSize(). Вы также можете использовать функции, такие как setMinimumWidth() или setMaximumHeight(), для установки только ширины или высоты, если это необходимо.
Функция effectiveSizeHint() в свою очередь возвращает размер, соответствующий указанному Qt::SizeHint, и гарантирует, что возвращаемый размер ограничен минимальными и максимальными размерами и размерами подсказок. Вы можете установить политику размера элемента по вертикали и горизонтали, вызвав setSizePolicy(). Свойство sizePolicy используется системой макета для описания того, как этот элемент предпочитает увеличиваться или уменьшаться.
Вложенные QGraphicsLayoutItems
QGraphicsLayoutItems могут быть вложены в другие QGraphicsLayoutItems, подобно макетам, которые могут содержать подмакеты. Это делается либо путём передачи указателя на QGraphicsLayoutItem в защищённый конструктор QGraphicsLayoutItem, либо путём вызова setParentLayoutItem(). Функция parentLayoutItem() возвращает указатель на родительский элемент макета. Если родитель элемента равен 0 или если родитель не наследуется от QGraphicsItem, то функция parentLayoutItem() возвращает 0. isLayout() возвращает true , если подкласс QGraphicsLayoutItem сам является макетом, в противном случае возвращает false.
Qt использует QGraphicsLayoutItem для обеспечения функциональности макета в Graphics View Framework, но в будущем его использование может распространиться и на сам Qt.
См. также QGraphicsWidget, QGraphicsLayout, QGraphicsLinearLayout и QGraphicsGridLayout.
Документация по членам функции
QGraphicsLayoutItem::QGraphicsLayoutItem(QGraphicsLayoutItem *parent = Q_NULLPTR, bool isLayout = false)
Конструирует объект QGraphicsLayoutItem. parent становится родителем объекта. Если isLayout равно true, то элемент является макетом, в противном случае isLayout равно false.
[virtual] QGraphicsLayoutItem::~QGraphicsLayoutItem()
Уничтожает объект QGraphicsLayoutItem.
QRectF QGraphicsLayoutItem::contentsRect() const
Возвращает прямоугольник содержимого в локальных координатах.
Прямоугольник содержимого определяет подпрямоугольник, используемый связанным макетом при размещении дочерних элементов. Эта функция является удобной функцией, которая корректирует geometry() элемента на основе отступов содержимого. Обратите внимание, что getContentsMargins() — виртуальная функция, которую вы можете переопределить, чтобы вернуть отступы содержимого элемента.
См. также getContentsMargins() и geometry().
QSizeF QGraphicsLayoutItem::effectiveSizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
Возвращает эффективную подсказку размера для этого QGraphicsLayoutItem.
which — это подсказка размера. constraint — необязательный аргумент, определяющий специальное ограничение при расчёте эффективной подсказки размера. По умолчанию constraint — QSizeF(-1, -1), что означает отсутствие ограничений на подсказку размера.
Если вы хотите указать подсказку размера виджета для заданной ширины или высоты, вы можете указать фиксированное значение в constraint. Это полезно для виджетов, которые могут увеличиваться только по вертикали или горизонтали и которым необходимо установить ширину или высоту в специальное значение.
Например, элемент абзаца текста, помещаемый в колонку шириной 200, может увеличиваться по вертикали. Вы можете передать QSizeF(200, -1) в качестве ограничения, чтобы получить подходящую минимальную, предпочтительную и максимальную высоту.
Вы можете настроить эффективную подсказку размера, переопределив sizeHint() в подклассе QGraphicsLayoutItem или вызвав одну из следующих функций: setMinimumSize(), setPreferredSize или setMaximumSize() (или комбинацию обоих).
Эта функция кэширует каждую из подсказок размера и гарантирует, что sizeHint() будет вызвана только один раз для каждого значения which, если только constraint не указан и updateGeometry() не вызывался.
См. также sizeHint().
QRectF QGraphicsLayoutItem::geometry() const
Возвращает геометрию элемента (например, позицию и размер) в виде QRectF. Эта функция эквивалентна QRectF(pos(), size()).
См. также setGeometry().
[virtual] void QGraphicsLayoutItem::getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const
Эта виртуальная функция предоставляет отступы left, top, right и bottom содержимого для этого QGraphicsLayoutItem. Реализация по умолчанию предполагает, что все отступы содержимого равны 0. Параметры указывают на значения, хранящиеся в qreal. Если любой из указателей равен 0, то это значение не будет обновлено.
См. также QGraphicsWidget::setContentsMargins().
QGraphicsItem *QGraphicsLayoutItem::graphicsItem() const
Возвращает QGraphicsItem, который представляет этот элемент макета. Для QGraphicsWidget он вернёт сам себя. Для пользовательских элементов он может вернуть агрегированное значение.
См. также setGraphicsItem().
bool QGraphicsLayoutItem::isLayout() const
Возвращает true , если этот QGraphicsLayoutItem является макетом (например, наследуется от объекта, который организует другие объекты QGraphicsLayoutItem); в противном случае возвращает false.
См. также QGraphicsLayout.
qreal QGraphicsLayoutItem::maximumHeight() const
Возвращает максимальную высоту.
См. также setMaximumHeight(), setMaximumSize() и maximumSize().
QSizeF QGraphicsLayoutItem::maximumSize() const
Возвращает максимальный размер.
См. также setMaximumSize(), minimumSize(), preferredSize(), Qt::MaximumSize и sizeHint().
qreal QGraphicsLayoutItem::maximumWidth() const
Возвращает максимальную ширину.
См. также setMaximumWidth(), setMaximumSize() и maximumSize().
qreal QGraphicsLayoutItem::minimumHeight() const
Возвращает минимальную высоту.
См. также setMinimumHeight(), setMinimumSize() и minimumSize().
QSizeF QGraphicsLayoutItem::minimumSize() const
Возвращает минимальный размер.
См. также setMinimumSize(), preferredSize(), maximumSize(), Qt::MinimumSize и sizeHint().
qreal QGraphicsLayoutItem::minimumWidth() const
Возвращает минимальную ширину.
См. также setMinimumWidth(), setMinimumSize() и minimumSize().
bool QGraphicsLayoutItem::ownedByLayout() const
Возвращает значение, определяющее, должен ли макет удалить этот элемент в своём деструкторе. Если это true, то макет удалит его. Если false, предполагается, что владение этим элементом принадлежит другому объекту, и макет его не удалит.
Если элемент наследует как QGraphicsItem, так и QGraphicsLayoutItem (например, QGraphicsWidget), то этот элемент фактически входит в две иерархии владения. Этот параметр определяет, что должен делать макет с его дочерними элементами при удалении. В случае с QGraphicsWidget, предпочтительно, чтобы при удалении макета он не удалял свои дочерние элементы (поскольку они также являются частью иерархии элементов графического интерфейса).
По умолчанию это значение инициализируется как false в QGraphicsLayoutItem, но переопределяется QGraphicsLayout на true. Это связано с тем, что QGraphicsLayout обычно не является частью иерархии QGraphicsItem, поэтому родительский макет должен его удалить. Подклассы могут переопределить это поведение по умолчанию, вызвав setOwnedByLayout(true).
Эта функция была добавлена в Qt 4.6.
См. также setOwnedByLayout().
QGraphicsLayoutItem *QGraphicsLayoutItem::parentLayoutItem() const
Возвращает родительский элемент QGraphicsLayoutItem или 0, если родителя нет или родитель не наследует от QGraphicsLayoutItem (QGraphicsLayoutItem часто используется через множественное наследование с классами, производными от QObject).
См. также setParentLayoutItem().
qreal QGraphicsLayoutItem::preferredHeight() const
Возвращает предпочтительную высоту.
См. также setPreferredHeight(), setPreferredSize() и preferredSize().
QSizeF QGraphicsLayoutItem::preferredSize() const
Возвращает предпочтительный размер.
См. также setPreferredSize(), minimumSize(), maximumSize(), Qt::PreferredSize и sizeHint().
qreal QGraphicsLayoutItem::preferredWidth() const
Возвращает предпочтительную ширину.
См. также setPreferredWidth(), setPreferredSize() и preferredSize().
[virtual] void QGraphicsLayoutItem::setGeometry(const QRectF &rect)
Этот виртуальный метод устанавливает геометрию QGraphicsLayoutItem в rect, которая задана в координатах родителя (например, верхний левый угол rect эквивалентен позиции элемента в координатах родителя).
Вы должны переопределить этот метод в подклассе QGraphicsLayoutItem, чтобы получать обновления геометрии. Макет вызовет этот метод при переупорядочении.
Если rect выходит за пределы границ minimumSize и maximumSize, она будет скорректирована до ближайшего размера, чтобы оставаться в допустимых пределах.
См. также geometry().
[protected] void QGraphicsLayoutItem::setGraphicsItem(QGraphicsItem *item)
Если QGraphicsLayoutItem представляет собой QGraphicsItem и хочет воспользоваться автоматическими возможностями переопределения родителя QGraphicsLayout, оно должно установить это значение. Обратите внимание, что если вы удаляете item, но не удаляете элемент макета, вы несете ответственность за вызов setGraphicsItem(0), чтобы избежать наличия висящей ссылки.
См. также graphicsItem().
void QGraphicsLayoutItem::setMaximumHeight(qreal height)
Устанавливает максимальную высоту в height.
См. также maximumHeight(), setMaximumSize() и maximumSize().
void QGraphicsLayoutItem::setMaximumSize(const QSizeF &size)
Устанавливает максимальный размер в size. Этот параметр переопределяет sizeHint() для Qt::MaximumSize и гарантирует, что effectiveSizeHint() никогда не вернёт размер, больший, чем size. Для отмены установки максимального размера используйте недействительный размер.
См. также maximumSize(), minimumSize(), preferredSize(), Qt::MaximumSize и sizeHint().
void QGraphicsLayoutItem::setMaximumSize(qreal w, qreal h)
Этот вспомогательный метод эквивалентен вызову setMaximumSize(QSizeF(w, h)).
См. также maximumSize(), setMinimumSize(), setPreferredSize() и sizeHint().
void QGraphicsLayoutItem::setMaximumWidth(qreal width)
Устанавливает максимальную ширину в width.
См. также maximumWidth(), setMaximumSize() и maximumSize().
void QGraphicsLayoutItem::setMinimumHeight(qreal height)
Устанавливает минимальную высоту в height.
См. также minimumHeight(), setMinimumSize() и minimumSize().
void QGraphicsLayoutItem::setMinimumSize(const QSizeF &size)
Устанавливает минимальный размер в size. Этот параметр переопределяет sizeHint() для Qt::MinimumSize и гарантирует, что effectiveSizeHint() никогда не вернёт размер меньший, чем size. Для отмены установки минимального размера используйте недействительный размер.
См. также minimumSize(), maximumSize(), preferredSize(), Qt::MinimumSize, sizeHint(), setMinimumWidth() и setMinimumHeight().
void QGraphicsLayoutItem::setMinimumSize(qreal w, qreal h)
Этот вспомогательный метод эквивалентен вызову setMinimumSize(QSizeF(w, h)).
См. также minimumSize(), setMaximumSize(), setPreferredSize() и sizeHint().
void QGraphicsLayoutItem::setMinimumWidth(qreal width)
Устанавливает минимальную ширину в width.
См. также minimumWidth(), setMinimumSize() и minimumSize().
[protected] void QGraphicsLayoutItem::setOwnedByLayout(bool ownership)
Устанавливает, должен ли макет удалить этот элемент при уничтожении или нет. ownership должно быть true, чтобы макет удалил его.
Эта функция была добавлена в Qt 4.6.
См. также ownedByLayout().
void QGraphicsLayoutItem::setParentLayoutItem(QGraphicsLayoutItem *parent)
Устанавливает родителя этого QGraphicsLayoutItem в parent.
См. также parentLayoutItem().
void QGraphicsLayoutItem::setPreferredHeight(qreal height)
Устанавливает предпочтительную высоту в height.
См. также preferredHeight(), preferredWidth(), setPreferredSize() и preferredSize().
void QGraphicsLayoutItem::setPreferredSize(const QSizeF &size)
Устанавливает предпочтительный размер на size. Это свойство переопределяет sizeHint() для Qt::PreferredSize и предоставляет значение по умолчанию для effectiveSizeHint(). Для сброса предпочтительного размера используйте недействительный размер.
См. также preferredSize(), minimumSize(), maximumSize(), Qt::PreferredSize и sizeHint().
void QGraphicsLayoutItem::setPreferredSize(qreal w, qreal h)
Эта функция-удобство эквивалентна вызову setPreferredSize(QSizeF(w, h)).
См. также preferredSize(), setMaximumSize(), setMinimumSize() и sizeHint().
void QGraphicsLayoutItem::setPreferredWidth(qreal width)
Устанавливает предпочтительную ширину на width.
См. также preferredWidth(), preferredHeight(), setPreferredSize() и preferredSize().
void QGraphicsLayoutItem::setSizePolicy(const QSizePolicy &policy)
Устанавливает политику размера на policy. Политика размера описывает, как элемент должен расти по горизонтали и вертикали при размещении в макете.
QGraphicsLayoutItem's политика размера по умолчанию — (QSizePolicy::Fixed, QSizePolicy::Fixed, QSizePolicy::DefaultType), но подклассы часто её меняют. Например, у QGraphicsWidget по умолчанию (QSizePolicy::Preferred, QSizePolicy::Preferred, QSizePolicy::DefaultType).
См. также sizePolicy() и QWidget::sizePolicy().
void QGraphicsLayoutItem::setSizePolicy(QSizePolicy::Policy hPolicy, QSizePolicy::Policy vPolicy, QSizePolicy::ControlType controlType = QSizePolicy::DefaultType)
Это перегруженная функция.
Эта функция эквивалентна вызову setSizePolicy(QSizePolicy(hPolicy, vPolicy, controlType)).
См. также sizePolicy() и QWidget::sizePolicy().
QSizeF QGraphicsLayoutItem::sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
Эта чисто виртуальная функция возвращает предпочтительный размер для which QGraphicsLayoutItem, используя ширину или высоту constraint для ограничения результата.
Переопределите эту функцию в подклассе QGraphicsLayoutItem, чтобы предоставить необходимые предпочтительные размеры для ваших элементов.
См. также effectiveSizeHint().
QSizePolicy QGraphicsLayoutItem::sizePolicy() const
Возвращает текущую политику размера.
См. также setSizePolicy() и QWidget::sizePolicy().
void QGraphicsLayoutItem::updateGeometry()
Эта виртуальная функция отбрасывает любые кэшированные сведения о предпочтительном размере. Вы всегда должны вызывать эту функцию, если вы изменяете возвращаемое значение функции sizeHint(). Подклассы должны всегда вызывать базовый реализацию при переопределении этой функции.
См. также effectiveSizeHint().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qgraphicslayoutitem.html