在设置主窗口的固定宽度后,我一直在尝试禁用调整大小手柄。我在Qt表单中读到将statusBar()->setSizeGripEnabled()
设置为false
会禁用调整大小的抓地力,但没有运气。我在Qt5
上运行此功能。
我知道删除框架会消除这个问题,但这是一个更大的问题(创建拖动窗口的方法,添加按钮关闭等)。到目前为止,这是我在main
方法中的内容:
#if defined(Q_OS_WIN)
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
QApplication a(argc, argv);
Compressor w;
w.statusBar()->setSizeGripEnabled( false );
w.setFixedSize(QSize(360,450));
w.setGeometry(
QStyle::alignedRect(
Qt::LeftToRight,
Qt::AlignCenter,
w.size(),
a.desktop()->availableGeometry()
)
);
w.show();
setGeometry
在启动时将窗口设置在屏幕中央,将其固定为一个大小。我不确定问题是什么。有什么方法可以解决这个问题吗?
更新
设置w.setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Fixed);
无效。试图修复Fixed
,没有运气。
更新2
我甚至删除了状态栏,但仍然没有运气。
更新3
示例:
在Windows 10上使用版本Qt 5.10.1
答案 0 :(得分:2)
Windows似乎对成为跨平台友好操作系统有点坚定。解决问题的方法是添加一个窗口标志。代码:
进入main.cpp
:
// Disable resize arrow.
#if defined(Q_OS_WIN)
w.setWindowFlags(w.windowFlags() | Qt::MSWindowsFixedSizeDialogHint);
#endif
完整代码:
#if defined(Q_OS_WIN)
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
QApplication a(argc, argv);
Compressor w;
// Disable resize arrow.
#if defined(Q_OS_WIN)
w.setWindowFlags(w.windowFlags() | Qt::MSWindowsFixedSizeDialogHint);
#endif
w.setFixedSize(QSize(360,450));
w.setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Fixed);
w.setGeometry(
QStyle::alignedRect(
Qt::LeftToRight,
Qt::AlignCenter,
w.size(),
a.desktop()->availableGeometry()
)
);
w.show();
或强>
您还可以将其添加到MainWindow.cpp
文件中:
this->setWindowFlags(this->windowFlags() | Qt::MSWindowsFixedSizeDialogHint);