fix can not max widnow
This commit is contained in:
parent
3824169324
commit
5367abc5e8
@ -191,11 +191,12 @@ bool FramelessDelegateWin::nativeEvent(const QByteArray & eventType, void* messa
|
||||
return false;
|
||||
}
|
||||
case WM_NCLBUTTONDBLCLK: {
|
||||
*result = 0;
|
||||
if (mainWidget_->maximumSize() == QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX) &&
|
||||
mainWidget_->windowFlags().testFlag(Qt::WindowMaximizeButtonHint))
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
case WM_NCRBUTTONUP:
|
||||
{
|
||||
@ -368,12 +369,13 @@ void FramelessDelegateWin::SetNativeWindowLong() {
|
||||
style &= ~WS_MINIMIZEBOX;
|
||||
style &= ~WS_MAXIMIZEBOX;
|
||||
|
||||
if (!mainWidget_->windowFlags().testFlag(Qt::WindowMinimizeButtonHint) ||
|
||||
mainWidget_->maximumSize() != QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)) {
|
||||
style &= ~WS_MINIMIZEBOX;
|
||||
// 根据 Qt 窗口标志与大小约束,启用系统最小化/最大化按钮能力
|
||||
const bool canResize = (mainWidget_->maximumSize() == QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX));
|
||||
if (mainWidget_->windowFlags().testFlag(Qt::WindowMinimizeButtonHint) && canResize) {
|
||||
style |= WS_MINIMIZEBOX;
|
||||
}
|
||||
if (!mainWidget_->windowFlags().testFlag(Qt::WindowMaximizeButtonHint)) {
|
||||
style &= ~WS_MAXIMIZEBOX;
|
||||
if (mainWidget_->windowFlags().testFlag(Qt::WindowMaximizeButtonHint) && canResize) {
|
||||
style |= WS_MAXIMIZEBOX;
|
||||
}
|
||||
|
||||
::SetWindowLongPtr(hwnd, GWL_STYLE, style);
|
||||
|
||||
@ -6,9 +6,13 @@
|
||||
|
||||
FramelessWindow::FramelessWindow(QWidget* parent)
|
||||
: QFrame(parent) {
|
||||
setWindowFlags(windowFlags() | Qt::Window | Qt::FramelessWindowHint | Qt::WindowSystemMenuHint);
|
||||
setWindowFlags(windowFlags()
|
||||
| Qt::Window
|
||||
| Qt::FramelessWindowHint
|
||||
| Qt::WindowSystemMenuHint
|
||||
| Qt::WindowMaximizeButtonHint
|
||||
| Qt::WindowMinimizeButtonHint);
|
||||
|
||||
// 初始化平台相关的无边框委托,用于命中测试和缩放。
|
||||
delegate_ = FramelessDelegate::Create(this);
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user