QML窗口最小尺寸带框架

Mar*_*yan 6 qt qml

我想为我的QML窗口设置最小尺寸.但是,如果我在main.qml中设置了最小宽度和高度,那么我的窗口大小比我设置和期望的大.问题是最小尺寸应用于窗框内的视图,并且不考虑窗框和标题尺寸.

ApplicationWindow {
  id: application
  minimumWidth: 1024
  minimumHeight: 768
  visibility: "Maximized"
}
Run Code Online (Sandbox Code Playgroud)

有没有办法设置应用程序窗口最小尺寸考虑到窗口框架?

我使用Qt 5.4.

fol*_*bis 3

正如@luke_carter已经说过的,可以通过调用与其大小相关的 QFrame 函数之一,例如QFrame::frameGeometry()。它可以获取窗口大小,包括框架和标题栏。因此,您所需要做的就是调整 QML 窗口大小。我认为最好的方法是使用具有合适功能的单例来做到这一点,例如:

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

在 QML 中:

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