/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/ThirdParty/ads/linux/FloatingWidgetTitleBar.h
109 строк
3 KB
Jan Krassnigg
Updated ads (Advanced Docking System) to version 3.7.1 (#396)
19 май 2021, 12:28
Не верифицирован
19 май 2021, 12:28
0221d0d
Код
Авторство
О чём код?
#ifndef FLOATINGWIDGETTITLEBAR_H #define FLOATINGWIDGETTITLEBAR_H /******************************************************************************* ** Qt Advanced Docking System ** Copyright (C) 2017 Uwe Kindler ** ** This library is free software; you can redistribute it and/or ** modify it under the terms of the GNU Lesser General Public ** License as published by the Free Software Foundation; either ** version 2.1 of the License, or (at your option) any later version. ** ** This library is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** Lesser General Public License for more details. ** ** You should have received a copy of the GNU Lesser General Public ** License along with this library; If not, see <http://www.gnu.org/licenses/>. ******************************************************************************/ //============================================================================ /// \file FloatingWidgetTitleBar.h /// \author Uwe Kindler /// \date 13.05.2019 /// \brief Declaration of CFloatingWidgetTitleBar class //============================================================================ //============================================================================ // INCLUDES //============================================================================ #include <QFrame> #include <QIcon> namespace ads { class CFloatingDockContainer; struct FloatingWidgetTitleBarPrivate; /** * Titlebar for floating widgets to capture non client are mouse events. * Linux does not support NonClieantArea mouse events like * QEvent::NonClientAreaMouseButtonPress. Because these events are required * for the docking system to work properly, we use our own titlebar here to * capture the required mouse events. */ class CFloatingWidgetTitleBar : public QFrame { Q_OBJECT Q_PROPERTY(QIcon maximizeIcon READ maximizeIcon WRITE setMaximizeIcon) Q_PROPERTY(QIcon normalIcon READ normalIcon WRITE setNormalIcon) private: FloatingWidgetTitleBarPrivate *d; ///< private data (pimpl) protected: virtual void mousePressEvent(QMouseEvent *ev) override; virtual void mouseReleaseEvent(QMouseEvent *ev) override; virtual void mouseMoveEvent(QMouseEvent *ev) override; virtual void mouseDoubleClickEvent(QMouseEvent *event) override; void setMaximizeIcon(const QIcon& Icon); QIcon maximizeIcon() const; void setNormalIcon(const QIcon& Icon); QIcon normalIcon() const; public: using Super = QWidget; explicit CFloatingWidgetTitleBar(CFloatingDockContainer *parent = nullptr); /** * Virtual Destructor */ virtual ~CFloatingWidgetTitleBar(); /** * Enables / disables the window close button. */ void enableCloseButton(bool Enable); /** * Sets the window title, that means, the text of the internal tile label. */ void setTitle(const QString &Text); /** * Update stylesheet style if a property changes */ void updateStyle(); /** * Change the maximize button icon according to current windows state */ void setMaximizedIcon(bool maximized); signals: /** * This signal is emitted, if the close button is clicked. */ void closeRequested(); /** * This signal is emitted, if the maximize button is clicked. */ void maximizeRequested(); }; } // namespace ads #endif // FLOATINGWIDGETTITLEBAR_H