在设置主窗口的固定宽度后,我一直试图禁用调整大小的抓地力。我在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上使用QT5.10.1版本
发布于 2018-05-01 04:30:34
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);有关更多信息,请参见http://doc.qt.io/qt-5/qt.html#WindowType-enum。
https://stackoverflow.com/questions/50110952
复制相似问题