QML窗口最小尺寸带框架

时间:2015-03-26 10:05:21

标签: qt qml

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

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

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

我使用Qt 5.4。

2 个答案:

答案 0 :(得分:2)

也许使用Qt::FramelessWindowHint隐藏框架(如果使用qml viewer,则隐藏-frameless)?我猜这是因为框架是操作系统窗口系统的一部分。

刚刚找到this,可以从目标操作系统获取帧大小。

答案 1 :(得分:2)

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

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);
    }
}