forked from github_mirror/framelesshelper
Widgets: move FramelessWidgetsHelper to source directory
It's pure implementation detail, so should not be publicly visible Also fixed the crash of the QOpenGLWidget demo application. Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
parent
a0a9b8d108
commit
2915d1f33a
|
@ -41,7 +41,9 @@
|
||||||
- [ ] All: Add QtWebEngine demo applications for both Qt Widgets and Qt Quick.
|
- [ ] All: Add QtWebEngine demo applications for both Qt Widgets and Qt Quick.
|
||||||
- [ ] All: Make more settings and options configurable through environment variables and configuration files.
|
- [ ] All: Make more settings and options configurable through environment variables and configuration files.
|
||||||
- Future versions
|
- Future versions
|
||||||
- [ ] Windows: Maximize button docking feature introduced in Windows 11
|
- [ ] Windows: Maximize button docking feature introduced in Windows 11.
|
||||||
|
- [ ] Linux: Support runtime theme switching.
|
||||||
|
- [ ] Linux: Move window resize area outside of the client area.
|
||||||
- [ ] More feature requests are welcome!
|
- [ ] More feature requests are welcome!
|
||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
@ -73,6 +75,7 @@ Please refer to the demo applications to see more detailed usages: [examples](./
|
||||||
### Linux
|
### Linux
|
||||||
|
|
||||||
- FramelessHelper will force your application to use the _XCB_ platform plugin when running on Wayland.
|
- FramelessHelper will force your application to use the _XCB_ platform plugin when running on Wayland.
|
||||||
|
- Currently lacks runtime theme switching support
|
||||||
|
|
||||||
### macOS
|
### macOS
|
||||||
|
|
||||||
|
|
|
@ -46,42 +46,42 @@ void MainWindow::updateMaximizeButton()
|
||||||
|
|
||||||
void MainWindow::setupUi()
|
void MainWindow::setupUi()
|
||||||
{
|
{
|
||||||
m_titleLabel.reset(new QLabel(this));
|
m_titleLabel = new QLabel(this);
|
||||||
QFont f = font();
|
QFont f = font();
|
||||||
f.setPointSize(kDefaultTitleBarFontPointSize);
|
f.setPointSize(kDefaultTitleBarFontPointSize);
|
||||||
m_titleLabel->setFont(f);
|
m_titleLabel->setFont(f);
|
||||||
connect(this, &MainWindow::windowTitleChanged, m_titleLabel.data(), &QLabel::setText);
|
connect(this, &MainWindow::windowTitleChanged, m_titleLabel, &QLabel::setText);
|
||||||
m_minBtn.reset(new QPushButton(this));
|
m_minBtn = new QPushButton(this);
|
||||||
m_minBtn->setText(tr("MINIMIZE"));
|
m_minBtn->setText(tr("MINIMIZE"));
|
||||||
connect(m_minBtn.data(), &QPushButton::clicked, this, &MainWindow::showMinimized);
|
connect(m_minBtn, &QPushButton::clicked, this, &MainWindow::showMinimized);
|
||||||
m_maxBtn.reset(new QPushButton(this));
|
m_maxBtn = new QPushButton(this);
|
||||||
updateMaximizeButton();
|
updateMaximizeButton();
|
||||||
connect(m_maxBtn.data(), &QPushButton::clicked, this, &MainWindow::toggleMaximized);
|
connect(m_maxBtn, &QPushButton::clicked, this, &MainWindow::toggleMaximized);
|
||||||
connect(this, &MainWindow::zoomedChanged, this, &MainWindow::updateMaximizeButton);
|
connect(this, &MainWindow::zoomedChanged, this, &MainWindow::updateMaximizeButton);
|
||||||
m_closeBtn.reset(new QPushButton(this));
|
m_closeBtn = new QPushButton(this);
|
||||||
m_closeBtn->setText(tr("CLOSE"));
|
m_closeBtn->setText(tr("CLOSE"));
|
||||||
connect(m_closeBtn.data(), &QPushButton::clicked, this, &MainWindow::close);
|
connect(m_closeBtn, &QPushButton::clicked, this, &MainWindow::close);
|
||||||
m_titleBarWidget.reset(new QWidget(this));
|
m_titleBarWidget = new QWidget(this);
|
||||||
m_titleBarWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
m_titleBarWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
||||||
m_titleBarWidget->setFixedHeight(kDefaultTitleBarHeight);
|
m_titleBarWidget->setFixedHeight(kDefaultTitleBarHeight);
|
||||||
const auto titleBarLayout = new QHBoxLayout(m_titleBarWidget.data());
|
const auto titleBarLayout = new QHBoxLayout(m_titleBarWidget);
|
||||||
titleBarLayout->setSpacing(0);
|
titleBarLayout->setSpacing(0);
|
||||||
titleBarLayout->setContentsMargins(0, 0, 0, 0);
|
titleBarLayout->setContentsMargins(0, 0, 0, 0);
|
||||||
titleBarLayout->addSpacerItem(new QSpacerItem(kDefaultTitleBarTitleLabelMargin, kDefaultTitleBarTitleLabelMargin));
|
titleBarLayout->addSpacerItem(new QSpacerItem(kDefaultTitleBarTitleLabelMargin, kDefaultTitleBarTitleLabelMargin));
|
||||||
titleBarLayout->addWidget(m_titleLabel.data());
|
titleBarLayout->addWidget(m_titleLabel);
|
||||||
titleBarLayout->addStretch();
|
titleBarLayout->addStretch();
|
||||||
titleBarLayout->addWidget(m_minBtn.data());
|
titleBarLayout->addWidget(m_minBtn);
|
||||||
titleBarLayout->addWidget(m_maxBtn.data());
|
titleBarLayout->addWidget(m_maxBtn);
|
||||||
titleBarLayout->addWidget(m_closeBtn.data());
|
titleBarLayout->addWidget(m_closeBtn);
|
||||||
m_titleBarWidget->setLayout(titleBarLayout);
|
m_titleBarWidget->setLayout(titleBarLayout);
|
||||||
m_glWidget.reset(new GLWidget(this));
|
m_glWidget = new GLWidget(this);
|
||||||
const auto mainLayout = new QVBoxLayout(this);
|
const auto mainLayout = new QVBoxLayout(this);
|
||||||
mainLayout->setSpacing(0);
|
mainLayout->setSpacing(0);
|
||||||
mainLayout->setContentsMargins(0, 0, 0, 0);
|
mainLayout->setContentsMargins(0, 0, 0, 0);
|
||||||
mainLayout->addWidget(m_titleBarWidget.data());
|
mainLayout->addWidget(m_titleBarWidget);
|
||||||
mainLayout->addWidget(m_glWidget.data());
|
mainLayout->addWidget(m_glWidget);
|
||||||
setLayout(mainLayout);
|
setLayout(mainLayout);
|
||||||
setTitleBarWidget(m_titleBarWidget.data());
|
setTitleBarWidget(m_titleBarWidget);
|
||||||
resize(800, 600);
|
resize(800, 600);
|
||||||
setWindowTitle(tr("QOpenGLWidget demo"));
|
setWindowTitle(tr("QOpenGLWidget demo"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,10 +49,10 @@ private:
|
||||||
void setupUi();
|
void setupUi();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QScopedPointer<QLabel> m_titleLabel;
|
QLabel *m_titleLabel = nullptr;
|
||||||
QScopedPointer<QPushButton> m_minBtn;
|
QPushButton *m_minBtn = nullptr;
|
||||||
QScopedPointer<QPushButton> m_maxBtn;
|
QPushButton *m_maxBtn = nullptr;
|
||||||
QScopedPointer<QPushButton> m_closeBtn;
|
QPushButton *m_closeBtn = nullptr;
|
||||||
QScopedPointer<QWidget> m_titleBarWidget;
|
QWidget *m_titleBarWidget = nullptr;
|
||||||
QScopedPointer<GLWidget> m_glWidget;
|
GLWidget *m_glWidget = nullptr;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
#include <framelesswidgetshelper.h>
|
|
|
@ -74,7 +74,7 @@ Q_SIGNALS:
|
||||||
void systemButtonStateChanged(const Global::SystemButtonType, const Global::ButtonState);
|
void systemButtonStateChanged(const Global::SystemButtonType, const Global::ButtonState);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QScopedPointer<FramelessWidgetsHelper> m_helper;
|
QScopedPointer<FramelessWidgetsHelper> d_ptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
FRAMELESSHELPER_END_NAMESPACE
|
FRAMELESSHELPER_END_NAMESPACE
|
||||||
|
|
|
@ -79,7 +79,7 @@ Q_SIGNALS:
|
||||||
void systemButtonStateChanged(const Global::SystemButtonType, const Global::ButtonState);
|
void systemButtonStateChanged(const Global::SystemButtonType, const Global::ButtonState);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QScopedPointer<FramelessWidgetsHelper> m_helper;
|
QScopedPointer<FramelessWidgetsHelper> d_ptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
FRAMELESSHELPER_END_NAMESPACE
|
FRAMELESSHELPER_END_NAMESPACE
|
||||||
|
|
|
@ -28,10 +28,10 @@ set(INCLUDE_PREFIX ../../include/FramelessHelper/Widgets)
|
||||||
|
|
||||||
set(SOURCES
|
set(SOURCES
|
||||||
${INCLUDE_PREFIX}/framelesshelperwidgets_global.h
|
${INCLUDE_PREFIX}/framelesshelperwidgets_global.h
|
||||||
${INCLUDE_PREFIX}/framelesswidgetshelper.h
|
|
||||||
${INCLUDE_PREFIX}/framelesswidget.h
|
${INCLUDE_PREFIX}/framelesswidget.h
|
||||||
${INCLUDE_PREFIX}/framelessmainwindow.h
|
${INCLUDE_PREFIX}/framelessmainwindow.h
|
||||||
${INCLUDE_PREFIX}/standardsystembutton.h
|
${INCLUDE_PREFIX}/standardsystembutton.h
|
||||||
|
framelesswidgetshelper_p.h
|
||||||
standardsystembutton_p.h
|
standardsystembutton_p.h
|
||||||
framelessmainwindow.cpp
|
framelessmainwindow.cpp
|
||||||
framelesswidgetshelper.cpp
|
framelesswidgetshelper.cpp
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "framelessmainwindow.h"
|
#include "framelessmainwindow.h"
|
||||||
#include "framelesswidgetshelper.h"
|
#include "framelesswidgetshelper_p.h"
|
||||||
|
|
||||||
FRAMELESSHELPER_BEGIN_NAMESPACE
|
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
@ -31,79 +31,79 @@ using namespace Global;
|
||||||
|
|
||||||
FramelessMainWindow::FramelessMainWindow(QWidget *parent, const Qt::WindowFlags flags, const UserSettings &settings) : QMainWindow(parent, flags)
|
FramelessMainWindow::FramelessMainWindow(QWidget *parent, const Qt::WindowFlags flags, const UserSettings &settings) : QMainWindow(parent, flags)
|
||||||
{
|
{
|
||||||
m_helper.reset(new FramelessWidgetsHelper(this, settings));
|
d_ptr.reset(new FramelessWidgetsHelper(this, settings));
|
||||||
}
|
}
|
||||||
|
|
||||||
FramelessMainWindow::~FramelessMainWindow() = default;
|
FramelessMainWindow::~FramelessMainWindow() = default;
|
||||||
|
|
||||||
bool FramelessMainWindow::isNormal() const
|
bool FramelessMainWindow::isNormal() const
|
||||||
{
|
{
|
||||||
return m_helper->isNormal();
|
return d_ptr->isNormal();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FramelessMainWindow::isZoomed() const
|
bool FramelessMainWindow::isZoomed() const
|
||||||
{
|
{
|
||||||
return m_helper->isZoomed();
|
return d_ptr->isZoomed();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FramelessMainWindow::isFixedSize() const
|
bool FramelessMainWindow::isFixedSize() const
|
||||||
{
|
{
|
||||||
return m_helper->isFixedSize();
|
return d_ptr->isFixedSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessMainWindow::setFixedSize(const bool value)
|
void FramelessMainWindow::setFixedSize(const bool value)
|
||||||
{
|
{
|
||||||
m_helper->setFixedSize(value);
|
d_ptr->setFixedSize(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessMainWindow::setTitleBarWidget(QWidget *widget)
|
void FramelessMainWindow::setTitleBarWidget(QWidget *widget)
|
||||||
{
|
{
|
||||||
m_helper->setTitleBarWidget(widget);
|
d_ptr->setTitleBarWidget(widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *FramelessMainWindow::titleBarWidget() const
|
QWidget *FramelessMainWindow::titleBarWidget() const
|
||||||
{
|
{
|
||||||
return m_helper->getTitleBarWidget();
|
return d_ptr->getTitleBarWidget();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessMainWindow::setHitTestVisible(QWidget *widget)
|
void FramelessMainWindow::setHitTestVisible(QWidget *widget)
|
||||||
{
|
{
|
||||||
m_helper->setHitTestVisible(widget);
|
d_ptr->setHitTestVisible(widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessMainWindow::toggleMaximized()
|
void FramelessMainWindow::toggleMaximized()
|
||||||
{
|
{
|
||||||
m_helper->toggleMaximized();
|
d_ptr->toggleMaximized();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessMainWindow::toggleFullScreen()
|
void FramelessMainWindow::toggleFullScreen()
|
||||||
{
|
{
|
||||||
m_helper->toggleFullScreen();
|
d_ptr->toggleFullScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessMainWindow::moveToDesktopCenter()
|
void FramelessMainWindow::moveToDesktopCenter()
|
||||||
{
|
{
|
||||||
m_helper->moveToDesktopCenter();
|
d_ptr->moveToDesktopCenter();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessMainWindow::bringToFront()
|
void FramelessMainWindow::bringToFront()
|
||||||
{
|
{
|
||||||
m_helper->bringToFront();
|
d_ptr->bringToFront();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessMainWindow::showSystemMenu(const QPoint &pos)
|
void FramelessMainWindow::showSystemMenu(const QPoint &pos)
|
||||||
{
|
{
|
||||||
m_helper->showSystemMenu(pos);
|
d_ptr->showSystemMenu(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessMainWindow::startSystemMove2(const QPoint &pos)
|
void FramelessMainWindow::startSystemMove2(const QPoint &pos)
|
||||||
{
|
{
|
||||||
m_helper->startSystemMove2(pos);
|
d_ptr->startSystemMove2(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessMainWindow::startSystemResize2(const Qt::Edges edges, const QPoint &pos)
|
void FramelessMainWindow::startSystemResize2(const Qt::Edges edges, const QPoint &pos)
|
||||||
{
|
{
|
||||||
m_helper->startSystemResize2(edges, pos);
|
d_ptr->startSystemResize2(edges, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
FRAMELESSHELPER_END_NAMESPACE
|
FRAMELESSHELPER_END_NAMESPACE
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "framelesswidget.h"
|
#include "framelesswidget.h"
|
||||||
#include "framelesswidgetshelper.h"
|
#include "framelesswidgetshelper_p.h"
|
||||||
|
|
||||||
FRAMELESSHELPER_BEGIN_NAMESPACE
|
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
@ -31,89 +31,89 @@ using namespace Global;
|
||||||
|
|
||||||
FramelessWidget::FramelessWidget(QWidget *parent, const UserSettings &settings) : QWidget(parent)
|
FramelessWidget::FramelessWidget(QWidget *parent, const UserSettings &settings) : QWidget(parent)
|
||||||
{
|
{
|
||||||
m_helper.reset(new FramelessWidgetsHelper(this, settings));
|
d_ptr.reset(new FramelessWidgetsHelper(this, settings));
|
||||||
}
|
}
|
||||||
|
|
||||||
FramelessWidget::~FramelessWidget() = default;
|
FramelessWidget::~FramelessWidget() = default;
|
||||||
|
|
||||||
bool FramelessWidget::isNormal() const
|
bool FramelessWidget::isNormal() const
|
||||||
{
|
{
|
||||||
return m_helper->isNormal();
|
return d_ptr->isNormal();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FramelessWidget::isZoomed() const
|
bool FramelessWidget::isZoomed() const
|
||||||
{
|
{
|
||||||
return m_helper->isZoomed();
|
return d_ptr->isZoomed();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FramelessWidget::isFixedSize() const
|
bool FramelessWidget::isFixedSize() const
|
||||||
{
|
{
|
||||||
return m_helper->isFixedSize();
|
return d_ptr->isFixedSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessWidget::setFixedSize(const bool value)
|
void FramelessWidget::setFixedSize(const bool value)
|
||||||
{
|
{
|
||||||
m_helper->setFixedSize(value);
|
d_ptr->setFixedSize(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessWidget::setTitleBarWidget(QWidget *widget)
|
void FramelessWidget::setTitleBarWidget(QWidget *widget)
|
||||||
{
|
{
|
||||||
m_helper->setTitleBarWidget(widget);
|
d_ptr->setTitleBarWidget(widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *FramelessWidget::titleBarWidget() const
|
QWidget *FramelessWidget::titleBarWidget() const
|
||||||
{
|
{
|
||||||
return m_helper->getTitleBarWidget();
|
return d_ptr->getTitleBarWidget();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessWidget::setContentWidget(QWidget *widget)
|
void FramelessWidget::setContentWidget(QWidget *widget)
|
||||||
{
|
{
|
||||||
m_helper->setContentWidget(widget);
|
d_ptr->setContentWidget(widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *FramelessWidget::contentWidget() const
|
QWidget *FramelessWidget::contentWidget() const
|
||||||
{
|
{
|
||||||
return m_helper->getContentWidget();
|
return d_ptr->getContentWidget();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessWidget::setHitTestVisible(QWidget *widget)
|
void FramelessWidget::setHitTestVisible(QWidget *widget)
|
||||||
{
|
{
|
||||||
m_helper->setHitTestVisible(widget);
|
d_ptr->setHitTestVisible(widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessWidget::toggleMaximized()
|
void FramelessWidget::toggleMaximized()
|
||||||
{
|
{
|
||||||
m_helper->toggleMaximized();
|
d_ptr->toggleMaximized();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessWidget::toggleFullScreen()
|
void FramelessWidget::toggleFullScreen()
|
||||||
{
|
{
|
||||||
m_helper->toggleFullScreen();
|
d_ptr->toggleFullScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessWidget::moveToDesktopCenter()
|
void FramelessWidget::moveToDesktopCenter()
|
||||||
{
|
{
|
||||||
m_helper->moveToDesktopCenter();
|
d_ptr->moveToDesktopCenter();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessWidget::bringToFront()
|
void FramelessWidget::bringToFront()
|
||||||
{
|
{
|
||||||
m_helper->bringToFront();
|
d_ptr->bringToFront();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessWidget::showSystemMenu(const QPoint &pos)
|
void FramelessWidget::showSystemMenu(const QPoint &pos)
|
||||||
{
|
{
|
||||||
m_helper->showSystemMenu(pos);
|
d_ptr->showSystemMenu(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessWidget::startSystemMove2(const QPoint &pos)
|
void FramelessWidget::startSystemMove2(const QPoint &pos)
|
||||||
{
|
{
|
||||||
m_helper->startSystemMove2(pos);
|
d_ptr->startSystemMove2(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramelessWidget::startSystemResize2(const Qt::Edges edges, const QPoint &pos)
|
void FramelessWidget::startSystemResize2(const Qt::Edges edges, const QPoint &pos)
|
||||||
{
|
{
|
||||||
m_helper->startSystemResize2(edges, pos);
|
d_ptr->startSystemResize2(edges, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
FRAMELESSHELPER_END_NAMESPACE
|
FRAMELESSHELPER_END_NAMESPACE
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "framelesswidgetshelper.h"
|
#include "framelesswidgetshelper_p.h"
|
||||||
#include "standardsystembutton.h"
|
#include "standardsystembutton.h"
|
||||||
#include <QtCore/qdebug.h>
|
#include <QtCore/qdebug.h>
|
||||||
#include <QtCore/qvariant.h>
|
#include <QtCore/qvariant.h>
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
/*
|
|
||||||
* MIT License
|
|
||||||
*
|
|
||||||
* Copyright (C) 2022 by wangwenx190 (Yuhang Zhao)
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "../../include/FramelessHelper/Widgets/framelesswidgetshelper.h"
|
|
Loading…
Reference in New Issue