This commit is contained in:
朱子楚\zhuzi 2023-12-18 22:24:24 +08:00
parent 2bd0a831e7
commit 6d2a8cde7a
4 changed files with 15 additions and 7 deletions

View File

@ -197,6 +197,8 @@ void FluFrameless::componentComplete(){
DWORD style = GetWindowLongPtr(hwnd,GWL_STYLE);
SetWindowLongPtr(hwnd,GWL_STYLE,style &~ WS_SYSMENU);
SetWindowPos(hwnd,nullptr,0,0,0,0,SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_NOMOVE | SWP_NOSIZE |SWP_FRAMECHANGED);
_stayTop = QQmlProperty(_window,"stayTop");
_stayTop.connectNotifySignal(this,SLOT(_stayTopChange()));
#else
_window->setFlag(Qt::FramelessWindowHint,true);
#endif
@ -204,6 +206,14 @@ void FluFrameless::componentComplete(){
}
}
void FluFrameless::_stayTopChange(){
#ifdef Q_OS_WIN
HWND hwnd = reinterpret_cast<HWND>(_window->winId());
DWORD style = GetWindowLongPtr(hwnd,GWL_STYLE);
SetWindowLongPtr(hwnd,GWL_STYLE,style &~ WS_SYSMENU);
#endif
}
FluFrameless::~FluFrameless(){
if (!_window.isNull()) {
_window->removeEventFilter(this);

View File

@ -5,6 +5,7 @@
#include <QQuickWindow>
#include <QtQml/qqml.h>
#include <QAbstractNativeEventFilter>
#include <QQmlProperty>
#include "stdafx.h"
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
@ -28,7 +29,6 @@ public:
class FluFrameless : public QObject, public QQmlParserStatus
{
Q_OBJECT
Q_PROPERTY_AUTO(bool,stayTop)
QML_NAMED_ELEMENT(FluFrameless)
public:
explicit FluFrameless(QObject *parent = nullptr);
@ -39,9 +39,11 @@ protected:
bool eventFilter(QObject *obj, QEvent *event) override;
private:
void updateCursor(int edges);
Q_SLOT void _stayTopChange();
private:
QPointer<QQuickWindow> _window = nullptr;
FramelessEventFilter* _nativeEvent = nullptr;
QQmlProperty _stayTop;
};
#endif // FLUFRAMELESS_H

View File

@ -112,9 +112,7 @@ Window {
}
Component{
id:com_frameless
FluFrameless{
stayTop: window.stayTop
}
FluFrameless{}
}
Component{
id:com_background

View File

@ -111,9 +111,7 @@ Window {
}
Component{
id:com_frameless
FluFrameless{
stayTop: window.stayTop
}
FluFrameless{}
}
Component{
id:com_background