【问题标题】:QML window minimal size with frame带框架的 QML 窗口最小尺寸
【发布时间】:2015-05-30 07:18:14
【问题描述】:

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

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

有没有办法在考虑窗口框架的情况下设置应用程序窗口的最小尺寸?

我使用 Qt 5.4。

【问题讨论】:

    标签: qt qml


    【解决方案1】:

    正如@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);
        }
    }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-17
        • 2010-10-26
        • 1970-01-01
        • 2015-12-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多