qt qml屏幕旋转问题

问题:ui设计时使用的是1920x1080的布局,转移到开发板上显示效果如下,如果正确显示界面?

在这里插入图片描述
方法1:直接改变屏幕显示方向,我也尝试了博客上的各种方法,最后没有成功

方法2:直接旋转qml图像,注意:旋转之后图像位置还是有问题需要进行平移
原来的代码

import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls 2.5

import "page/qml"as Qml
ApplicationWindow {
    title: qsTr("Hello World")

    property string loginAccount: ""
    property string loginPasswd: ""

    id:root
    width: 1920
    height:1080
    visible: true

    Image {
        source: "img/bg.png"
    }

    Loader {
        id: pageLoader
        anchors.fill: parent
        source: "./page/Loading.qml"
    }

    Timer {
        interval: 5000 // 延时2000毫秒(即2秒)
        repeat: false // 不重复
        running: true // 立即开始计时

        onTriggered: {
            pageLoader.source = "./page/Login.qml"
        }
    }

    Qml.InputKeyboard{
        id:inputKeyboard
    }
}

修改后代码如下

import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls 2.5

import "page/qml"as Qml
ApplicationWindow {
    title: qsTr("Hello World")

    property string loginAccount: ""
    property string loginPasswd: ""

    id:root
    width: 1080
    height:1920
    visible: true

    Rectangle{
        width: 1920
        height: 1080
        rotation: 270
        x:-(parent.height - parent.width)/2
        y:(parent.height - parent.width)/2

        Image {
            source: "img/bg.png"
        }

        Loader {
            id: pageLoader
            anchors.fill: parent
            source: "./page/Loading.qml"
        }

        Timer {
            interval: 5000 // 延时2000毫秒(即2秒)
            repeat: false // 不重复
            running: true // 立即开始计时

            onTriggered: {
                pageLoader.source = "./page/Login.qml"
            }
        }

        Qml.InputKeyboard{
            id:inputKeyboard
        }
    }
}

结论:调换窗口长和宽的尺寸为屏幕实际方向1080x1920,然后可以用一个Rectangle(1920x1080设计的UI尺寸)控件把界面全部包含起来,旋转rotation 270°,最后把x和y坐标平移-(parent.height - parent.width)/2和(parent.height - parent.width)/2。(注意最后的平移的大小可能和开发板有关,可以自己尝试一下)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值