5#ifndef ACTIONPROVIDER_H
6#define ACTIONPROVIDER_H
19#include <QtDesigner/extension.h>
20#include <QtCore/qpoint.h>
21#include <QtCore/qrect.h>
22#include <QtWidgets/qapplication.h>
34 virtual QAction *
actionAt(
const QPoint &pos)
const = 0;
42template <
class Widget>
43 int actionIndexAt(
const Widget *w,
const QPoint &pos, Qt::Orientation orientation)
45 const auto actions = w->actions();
46 if (actions.isEmpty())
51 const bool checkTopRight = orientation == Qt::Horizontal && w->layoutDirection() == Qt::RightToLeft;
52 const QPoint topRight = QPoint(w->rect().width(), 0);
53 for (qsizetype index = 0, actionCount = actions.size(); index < actionCount; ++index) {
54 QRect g = w->actionGeometry(actions.at(index));
56 g.setTopRight(topRight);
58 g.setTopLeft(QPoint(0, 0));
66Q_DECLARE_EXTENSION_INTERFACE(QDesignerActionProviderExtension,
"org.qt-project.Qt.Designer.ActionProvider")
int actionIndexAt(const Widget *w, const QPoint &pos, Qt::Orientation orientation)
virtual ~QDesignerActionProviderExtension()=default
virtual QRect actionGeometry(QAction *action) const =0
virtual QAction * actionAt(const QPoint &pos) const =0
virtual void adjustIndicator(const QPoint &pos)=0
Combined button and popup list for selecting options.
Auxiliary methods to store/retrieve settings.
static QRect verticalIndicatorRect(const QRect &rect)
static QRect horizontalIndicatorRect(const QRect &rect, Qt::LayoutDirection layoutDirection)