Михаиллл
Михаиллл15 июля 2019 г. 15:32

Можно ли в QML плавно открывать новое окно

Добрый день.
Читал, что можно сделать анимированный переход между состояниями одного окна.
Но можно ли сделать плавное открытие другого окна, например, что-бы окно плавно выезжало с какой-нибудь стороны?

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

10
Evgenii Legotckoi
  • 17 июля 2019 г. 0:52

Добрый день.

Ну сделать с помощью Animation Property выплывание некоторых объектов можно, вот только классический диалог так сделать не получится. Да и скорее всего будет кастомный диалог в случае диалогов Android.

    Михаиллл
    • 17 июля 2019 г. 12:04

    Понятно, но я хотел не диалог так сделать, а открытие нового окна.

      Evgenii Legotckoi
      • 17 июля 2019 г. 13:10

      Мне кажется, что я не полностью понял, что вы подразумеваете под новым окном.
      Мы сейчас говорим об окнах в настолькой операционной системе? Windows или Ubuntu например? То есть о классических окнах?
      Или о мобильной? и вы подразумеваете анимированные переход на следующий экран в Android?

      Просто при разработке в QML/Android используется только одно окно и рамках которого делается разработка приложения, второе классическо окно открыть нельзя, это просто не работает.

      Поэтому я до конца не понимаю, что именно стоит вам посоветовать.

        Михаиллл
        • 17 июля 2019 г. 13:18

        Я имел ввиду QML/Android, использую подобный код для перехода между окнами

            Loader
            {
                id: loader
                anchors.fill: parent
                source: "FIrstWindow.qml"
            }
        

        Можно ли сделать открытие окон плавным и выезжающим с какой-нибудь стороны?

          Evgenii Legotckoi
          • 17 июля 2019 г. 13:29

          Ну здесь можно попробовать прикрутить анимацию к некоторым свойствам. Вот вам такой пример

          main.qml
          import QtQuick 2.4
          import QtQuick.Window 2.0
          import QtQuick.Controls 2.5
          
          Window {
              id: window
              width: 400
              height: 400
              visible: true
          
              Loader {
                  id: loader
                  anchors.fill: parent
          
                  onSourceChanged: animation.running = true
          
                  NumberAnimation {
                      id: animation
                      target: loader.item
                      property: "x"
                      from: -width
                      to: 0
                      duration: 1000
                      easing.type: Easing.InExpo
                  }
              }
          
              Button {
                  anchors.horizontalCenter: parent.horizontalCenter
                  anchors.bottom: parent.bottom
                  anchors.bottomMargin: 5
          
                  text: qsTr("Click me")
          
                  onClicked: {
                      loader.source = "MyRectangle.qml"
                  }
              }
          }
          

          MyRectangle.qml

          import QtQuick 2.0
          
          Rectangle {
              id: rect
              color: "red"
              width: 150
              height: 150
          }
          
            Михаиллл
            • 17 июля 2019 г. 13:32

            Спасибо, а можно сделать анимацию не для все, а для некоторых страниц?

              Evgenii Legotckoi
              • 17 июля 2019 г. 13:42
              • Ответ был помечен как решение.

              Этого можно добиться, если при загрузке того или иного QML файла переустанавливать анимированное свойство.

              Я не уверен, что это до конца правильно, но это рабочее решение. Тем более, что в документации я не вижу информации о том, как временно отключить работу анимации.

              animation.property = "x" // добавить свойство для анимации
              animation.property = "" // убрать свойство для анимации
              loader.source = "MyRectangle.qml"
              
                Михаиллл
                • 17 июля 2019 г. 14:41

                Спасибо.

                  KM
                  • 6 октября 2020 г. 12:09
                  • (ред.)

                  То что я искала, Евгений можно у Вас попросить пример кода как плавно открыть диалог в qt designer?
                  Заранее спасибо!

                    Evgenii Legotckoi
                    • 8 октября 2020 г. 3:48

                    Я вам ответил в вашем вопросе, приложил там ссылки на пример. С Qt/C++ мороки будет больше. У меня к сожалению сейчас нет столько свободного времени, чтобы писать отдельный пример.

                      Комментарии

                      Только авторизованные пользователи могут публиковать комментарии.
                      Пожалуйста, авторизуйтесь или зарегистрируйтесь
                      Ua

                      Qt - Тест 001. Сигналы и слоты

                      • Результат:84баллов,
                      • Очки рейтинга4
                      Ua

                      Qt - Тест 001. Сигналы и слоты

                      • Результат:42баллов,
                      • Очки рейтинга-8
                      ОК

                      Qt - Тест 001. Сигналы и слоты

                      • Результат:47баллов,
                      • Очки рейтинга-6
                      Последние комментарии
                      ИМ
                      Игорь Максимов22 ноября 2024 г. 21:51
                      Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                      Evgenii Legotckoi
                      Evgenii Legotckoi31 октября 2024 г. 23:37
                      Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                      A
                      ALO1ZE19 октября 2024 г. 17:19
                      Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                      ИМ
                      Игорь Максимов5 октября 2024 г. 16:51
                      Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                      d
                      dblas55 июля 2024 г. 20:02
                      QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                      Сейчас обсуждают на форуме
                      f
                      firstlunoxod15 февраля 2025 г. 13:46
                      Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
                      Дмитрий
                      Дмитрий3 февраля 2025 г. 16:24
                      Создание deb-пакета. Как создать ярлык на рабочем столе после установки собственного deb-пакета? Всем привет. Сделал свой deb-пакет с программой. Всё устанавливается и работает. Ставлю по пути /usr/bin/my_application. Как для пользователя при установке пакета сразу создать ярлык на раб…
                      NW
                      Nayo Wai30 января 2025 г. 19:22
                      не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
                      n
                      nkly3 января 2025 г. 12:52
                      Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
                      M
                      Marsel17 августа 2023 г. 0:26
                      OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.

                      Следите за нами в социальных сетях