/**************************************************************************** ** Copyright (c) 2025 Evgeny Teterin (nayk) ** All right reserved. ** ** Permission is hereby granted, free of charge, to any person obtaining ** a copy of this software and associated documentation files (the ** "Software"), to deal in the Software without restriction, including ** without limitation the rights to use, copy, modify, merge, publish, ** distribute, sublicense, and/or sell copies of the Software, and to ** permit persons to whom the Software is furnished to do so, subject to ** the following conditions: ** ** The above copyright notice and this permission notice shall be ** included in all copies or substantial portions of the Software. ** ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE ** LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ** OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ** WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ** ****************************************************************************/ #pragma once #ifndef CIRCULAR_MENU_H #define CIRCULAR_MENU_H #if defined (LIB_CIRCULAR_MENU) # define CIRCULAR_MENU_EXPORT Q_DECL_EXPORT #else # define CIRCULAR_MENU_EXPORT Q_DECL_IMPORT #endif #include #include #include #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) # include #else # include #endif #include #include #include //============================================================================== class CircularMenuData; //============================================================================== class CIRCULAR_MENU_EXPORT CircularMenu : public QWidget { Q_OBJECT public: explicit CircularMenu(QWidget *parent = nullptr); virtual ~CircularMenu(); void addAction(QAction *action); void addActions(QList actions); qsizetype count() const; QList actions() const; QAction *actionAt(qsizetype index) const; bool removeAction(qsizetype index, qsizetype count = 1); void clear(); void setHotKey(Qt::Key key); protected: bool eventFilter(QObject *obj, QEvent *event) override; void paintEvent(QPaintEvent *event) override; void resizeEvent(QResizeEvent *event) override; private: CircularMenuData *d; }; //============================================================================== #endif // CIRCULAR_MENU_H