Qt小部件应用-基于方向的不同布局

时间:2019-04-23 17:20:34

标签: qt qt5

我有一个qt窗口小部件应用程序,如果屏幕方向是纵向还是横向,或者窗口的大小调整为大于宽度时,则需要重新排列。该应用程序在两种模式下都具有相同的小部件和功能,只是布局不同。

我意识到您可以在运行时根据调整大小事件在布局中移动小部件,但是这并不理想,因为您无法预先知道设计器中的外观。我还在档案中找到了这个示例:https://doc.qt.io/archives/qt-4.8/qt-widgets-orientation-example.html,其中有两个单独的UI可以选择在屏幕调整大小时显示哪个UI,但是在这种情况下,必须对两个UI进行每个UI更改,插槽连接等操作这也非常麻烦,不可扩展且容易出错。

是否有解决此情况的干净方法?或者至少在不运行应用程序的情况下可视化这两种模式? Qt版本是5.12 +

1 个答案:

答案 0 :(得分:0)

理论上,您可以创建2个文件或对象。其中之一是myLandscapeWidget和其他myPortraitWidget。用装载程序将它们包围起来,并可以进行

Loader {
    id: myLoader
    anchors.fill: parent
    sourceComponent: Screen.orientation === Qt.LandscapeOrientation ? land : port

    Component {
        id: land
        myLandscapeWidget {
            width: 500
            height: 100
        }
    }

    Component {
        id: port
        myPortraitWidget {
            width: 100
            height: 500
            visible: Screen.orientation !== Qt.LandscapeOrientation
        }
    }
}

好吧,这至少是要点... 一些链接: LoaderScreen