1 // vim: set tabstop=4 shiftwidth=4 expandtab: 2 /* 3 Gwenview: an image viewer 4 Copyright 2008 Aurélien Gâteau <agateau@kde.org> 5 6 This program is free software; you can redistribute it and/or 7 modify it under the terms of the GNU General Public License 8 as published by the Free Software Foundation; either version 2 9 of the License, or (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program; if not, write to the Free Software 18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA 02110-1301, USA. 19 20 */ 21 #ifndef WIDGETFLOATER_H 22 #define WIDGETFLOATER_H 23 24 #include <lib/gwenviewlib_export.h> 25 26 // Qt 27 #include <QObject> 28 29 // KF 30 31 // Local 32 33 namespace Gwenview 34 { 35 struct WidgetFloaterPrivate; 36 37 /** 38 * This helper object makes it possible to place a widget (the child) over 39 * another (the parent), ensuring the child remains aligned as specified by 40 * setAlignment() whenever either widget get resized. 41 */ 42 class GWENVIEWLIB_EXPORT WidgetFloater : public QObject 43 { 44 Q_OBJECT 45 public: 46 explicit WidgetFloater(QWidget *parent); 47 ~WidgetFloater() override; 48 49 void setChildWidget(QWidget *); 50 51 void setAlignment(Qt::Alignment); 52 53 void setHorizontalMargin(int); 54 int horizontalMargin() const; 55 56 void setVerticalMargin(int); 57 int verticalMargin() const; 58 59 protected: 60 bool eventFilter(QObject *, QEvent *) override; 61 62 private: 63 WidgetFloaterPrivate *const d; 64 }; 65 66 } // namespace 67 68 #endif /* WIDGETFLOATER_H */ 69