QML window 带框架的最小尺寸

QML window minimal size with frame

我想为我的 QML window 设置最小大小。但是,如果我在我的 main.qml 中设置最小宽度和高度,我得到的 window 的最小尺寸比我设置和预期的要大。 问题是最小尺寸应用于 window 框架内的视图,并且未考虑 window 框架和标题尺寸。

ApplicationWindow {
  id: application
  minimumWidth: 1024
  minimumHeight: 768
  visibility: "Maximized"
}

有没有办法设置应用 window 最小尺寸并考虑到 window 框架?

我使用 Qt 5.4。

也许使用 Qt::FramelessWindowHint 隐藏框架(如果使用 qml 查看器,则使用 -frameless)?我猜这是因为框架是 OS.

窗口系统的一部分

刚刚找到this,也许可以从目标OS获取帧大小。

正如@luke_carter 已经说过的,可以通过调用与其大小相关的 QFrame 函数之一,例如 QFrame::frameGeometry()。它会让你 window 大小 包括 框架和标题栏。所以你只需要调整 QML window 大小。我认为最好的方法是使用具有合适功能的单例,例如:

QRect MySingleton::frameSize(QObject *window)
{
    QQuickWindow *qw = qobject_cast<QQuickWindow *>(window);
    if(qw)
        return qw->frameGeometry();
    return QRect();
}

在 QML 中:

Window {
    id: wnd
    visible: true
    width: 300
    height: 300
    Component.onCompleted: {
        var rect = MySingleton.frameSize(wnd);
        console.log(rect.width + "," + rect.height);
    }
}