July 15, 2019, 5:32 a.m.

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

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

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.
8

Добрый день.

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

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

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

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

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

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

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

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

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

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
}

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

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

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

animation.property = "x" // добавить свойство для анимации
animation.property = "" // убрать свойство для анимации
loader.source = "MyRectangle.qml"

Спасибо.

Comments

Only authorized users can post comments.
Please, Log in or Sign up
Donate

Hello, Dear Users of EVILEG!!!

If the site helped you, then support the development of the site financially, please.

You can do it by following ways:

Thank you, Evgenii Legotckoi

T
Dec. 11, 2019, 4:56 p.m.
Toma

C++ - Тест 003. Условия и циклы

  • Result:50points,
  • Rating points-4
AT
Dec. 10, 2019, 8:06 a.m.
Anastasija Troschenkova

C++ - Test 001. The first program and data types

  • Result:60points,
  • Rating points-1
AT
Dec. 10, 2019, 8:02 a.m.
Anastasija Troschenkova

Qt - Test 001. Signals and slots

  • Result:73points,
  • Rating points1
Last comments
Dec. 9, 2019, 3:41 a.m.
Evgenij Legotskoj

Эта ошибка invalid use of incomplete type ‘class Ui::AnotherWindow’ обычно говорит о том, что не найдено определение класса или структуры. Типичная проблема - не подключён заголовочны…
NB
Dec. 9, 2019, 3:36 a.m.
Nikolaj Batmanov

Ну, не настолько со мной всё полхо...))) Вроде бы. Я ж кнопки отрисовываю.
Dec. 9, 2019, 3:14 a.m.
Evgenij Legotskoj

Добрый день. У вас ui файлов по ходу нет. UI файлы используются для вёрстки в графическом дизайнере.
NB
Dec. 9, 2019, 3:05 a.m.
Nikolaj Batmanov

Здравствуйте! Полностью скопировал ваш пример к себе, чтобы разобраться. А он не хочет запускаться, дает ошибку: invalid use of incomplete type ‘class Ui::AnotherWindow’ ui(new Ui…
Dec. 8, 2019, 7:23 a.m.
Evgenij Legotskoj

У меня здесь есть одна старая статья с примером векторного редактора. Там есть ответы на ваши вопросы. Поизучайте Qt/C++ - Урок 072. Пример векторного редактора на Qt QGraphicsItem, QG…
Now discuss on the forum
Dec. 12, 2019, 11:49 a.m.
qml_puthon_user

Да, с console.log() я разобрался, счётчик ничего не показывает
Dec. 12, 2019, 9:27 a.m.
Evgenij Legotskoj

Добрый день. Вообще Qt Designer это рисовалка формочек. Вы хотите от него больше, чем в нём есть. Максимум, что вы можете сделать, это накидать всю вёрстку в дизайнере, а потом привязыватьс…
MU
Dec. 11, 2019, 8:27 a.m.
Maciej Urmański

Thank you! Now works, and this is solution. num_embed = Embed.objects.filter(added_by=recipe.added_by).count()
Dec. 11, 2019, 8:12 a.m.
Mihailll

Так работает. Взял этот пример https://api-2d3d-cad.com/face_recognition_with_opencv/ void MainWindow::on_pushButton_4_clicked() //фото определение лица{ // Load Face cascade (.xml…
TD
Dec. 10, 2019, 4:14 a.m.
Timur Dosov

Спасибо, работает. А ещё вопрос: как загрузить страницу с динамической подгрузкой контента по скроллингу? Например - [https://ntvplus.ru/tv/]. Пока делаю через костыль - QApplication::s…
EVILEG
About
Services
© EVILEG 2015-2019
Recommend hosting TIMEWEB