QML 中元素的大小

发布于 2024-11-29 13:46:16 字数 99 浏览 0 评论 0原文

我是 QML 新手。 据我了解,所有元素都有关联的宽度和高度,这决定了它们的大小。 如果用户更改屏幕分辨率,最终输出看起来很奇怪。 有没有一种方法可以根据屏幕分辨率动态控制元素的大小?

I am new to QML.
As I understand, all elements have an associated width and height which determines their size.
If the user changes screen resolution, the final output looks weird.
Is there a way the size of elements could be controlled dynamically based on screen resolution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

囚我心虐我身 2024-12-06 13:46:16

您可以将根元素的 heightwidth 乘以因数,而不是使用固定值,从而确定与根元素大小成比例的元素大小。此外,您还可以使用QML 锚点。有了这个,您可以创建完全可扩展的 GUI:

import QtQuick 1.0

Item {
    id: root

    // default size, but scalable by user
    height: 300; width: 400

    Rectangle {
        id: leftPanel

        anchors {
            top: parent.top
            left: parent.left
            bottom: parent.bottom
        }
        width: root.width * 0.3
        color: "blue"
    }

    Rectangle {
        id: topPanel

        anchors {
            top: parent.top
            left: leftPanel.right
            right: parent.right
        }
        height: root.height * 0.2
        color: "green"
    }


    Rectangle {
        id: contentArea

        anchors {
            top: topPanel.bottom
            left: leftPanel.right
            right: parent.right
            bottom: root.bottom
        }
        color: "white"

        Text {
            text: "Hi, I'm scalable!"
            anchors.centerIn: parent
            font.pixelSize: root.width * 0.05
        }
    }
}

我不知道如何使用在所有环境下都可用的纯 QML 来获取屏幕分辨率。

要确定移动设备上的屏幕分辨率,您可以使用 QML 屏幕元素

在桌面应用程序中,您可以使用 C++ 获取屏幕分辨率(例如使用 QDesktopWidget)并将其设置为 以 QML 形式提供

Instead of using fixed values, you can multiply height and width of the root element by factors, that determine the size of your elements proportional to the root elements size. Additionally you can use QML anchors. With this you can create completely scalable GUIs:

import QtQuick 1.0

Item {
    id: root

    // default size, but scalable by user
    height: 300; width: 400

    Rectangle {
        id: leftPanel

        anchors {
            top: parent.top
            left: parent.left
            bottom: parent.bottom
        }
        width: root.width * 0.3
        color: "blue"
    }

    Rectangle {
        id: topPanel

        anchors {
            top: parent.top
            left: leftPanel.right
            right: parent.right
        }
        height: root.height * 0.2
        color: "green"
    }


    Rectangle {
        id: contentArea

        anchors {
            top: topPanel.bottom
            left: leftPanel.right
            right: parent.right
            bottom: root.bottom
        }
        color: "white"

        Text {
            text: "Hi, I'm scalable!"
            anchors.centerIn: parent
            font.pixelSize: root.width * 0.05
        }
    }
}

I dont know a way to get the screen resolution with pure QML that is available at all environments.

To determine the screen resolution on mobile devices you can use the QML Screen Element.

In desktop applications you can get the screen resolution in C++ (e.g. with QDesktopWidget) and make it available in QML.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文