Приложение виджета Qt - различные макеты в зависимости от ориентации - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть приложение qt виджетов, которое нужно переставить, если ориентация экрана - книжная или альбомная, или если размер окна изменен, чтобы быть выше, чем он широкий.Приложение имеет все одинаковые виджеты и функциональность в обоих режимах, просто выложены по-разному.

Я понимаю, что вы можете перемещать виджеты в макетах во время выполнения на основе событий изменения размера, но это само по себе не идеально, потому что вы не можете видеть, как он будет выглядеть заранее в конструкторе.Я также нашел этот пример в архивах: https://doc.qt.io/archives/qt-4.8/qt-widgets-orientation-example.html, где у них есть два отдельных UI, которые могут выбирать, какие будут отображаться при изменении размера экрана, но в этом случае каждое изменение UI, подключение слотов и т. Д. Должно выполняться обоимИнтерфейсы, которые также чрезвычайно громоздки, не масштабируются и подвержены ошибкам.

Есть ли чистый способ справиться с этой ситуацией?Или хотя бы визуализировать оба режима без запуска приложения?Версия Qt 5.12 +

1 Ответ

0 голосов
/ 23 апреля 2019

Вы можете - теоретически - создать 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
        }
    }
}

Ну, по крайней мере, вот в чем суть ... Некоторые ссылки: Загрузчик , Экран

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...