March 29, 2019, 1:31 p.m.

Как в QML сделать переход между состояниями

состояние, QML

Добрый день.

На одной из страниц я сделал 3 состояния

Как сделать переключение из 1 состояния во 2 или 3 состояние и обратно при нажатии кнопки?

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.
9

Добрый день.

Без кода тут даже подсказывать нечего.

0
import QtQuick 2.4
import QtQuick.Controls 2.2

Item {
    id: element
    width: 400
    height: 600
    property alias page1ButtonMenu: page1ButtonMenu

    Button {
        id: page1Button0
        x: 66
        y: 172
        width: 128
        height: 128
        //font.capitalization: Font.AllUppercase
        //display: AbstractButton.TextOnly
        //topPadding: 5
        Image {
            id: image
            width: 130
            height: 130
            anchors.topMargin: 0
            anchors.leftMargin: 0
            anchors.rightMargin: 0
            anchors.bottomMargin: 0
            anchors.fill: parent
            source: "qrc:/images/images/close.png"
            fillMode: Image.Stretch
        }
    }

    Button {
        id: page1Button1
        x: 251
        y: 172
        width: 130
        height: 130
        Image {
            id: image1
            width: 130
            height: 130
            anchors.rightMargin: 0
            anchors.bottomMargin: 0
            anchors.fill: parent
            source: "qrc:/images/images/close.png"
            fillMode: Image.Stretch
        }
    }

    Button {
        id: page1ButtonMenu
        x: 150
        y: 479
        text: qsTr("МЕНЮ")
        font.pointSize: 18
    }

    Label {
        id: page1labe0
        x: 57
        y: 47
        width: 286
        height: 33
        text: qsTr("Выберете красный цвет")
        horizontalAlignment: Text.AlignHCenter
        font.pixelSize: 22
        font.family: "Verdana"
        font.weight: Font.Thin
    }

    Label {
        id: page1Label1
        x: 122
        y: 358
        width: 156
        height: 56
        text: qsTr("Побед: 0%")
        font.pointSize: 20
        horizontalAlignment: Text.AlignHCenter
    }
    states: [
        State {
            name: "State1"

            PropertyChanges {
                target: image
                source: "images/red.png"
            }

            PropertyChanges {
                target: image1
                source: "images//black.png"
            }
        },
        State {
            name: "State2"

            PropertyChanges {
                target: image
                source: "images//black.png"
            }

            PropertyChanges {
                target: image1
                source: "images//red.png"
            }
        }
    ]
}

0

и отсюда еще один вопрос: фактически 3 состояния, а в коде только 2. почему так? как с этим работать?

0

как я понял нужно сделать третий states и вызвавть так states:имя состояния

0

Хотя почему то не работает. В файле main.qml прописал

    Loader
              {
                  id: loader
                  anchors.fill: parent
                  source: "Page1.qml"
                  state: "Page1State1"
              }

но почему то состояние не меняется. Скажите пожалуйста почему так и как исправть.

0

а если я в описании страницы Page1 прописываю state: "Page1State2", то почему то не загружаются картинки

0

Извините, с картинками разобрался, но вот как включать нужное состояние из других частей проекта, пока не понятно

0

Также попробовал прикрепить переход к сигналу кнопки, но переход не работает

    page1Button0.onClicked: {  //left button
        state: "Page1State0"
    }
0

Вот так заработало

    page1Button0.onClicked: {  //left button
        state = "Page1State2"
    }
0

Comments

Only authorized users can post comments.
Please, Log in or Sign up
Last comments
June 24, 2019, 10:23 a.m.
Евгений Легоцкой

Хорошо, ну будут проблемы помимо того, что касается статей, то не стесняйтесь задавать вопросы на форуме.
МБ
June 24, 2019, 10:21 a.m.
Михаил Булатов

Извиняюсь, все работает(из-за невнимательности).
June 24, 2019, 9:52 a.m.
Евгений Легоцкой

Придётся делать ещё сигнал в дочернем qml и пробрасывать через коннекты и обработчики. А вообще нужно смотреть конкретный код и что вы пытаетесь сделать. Так что лучше будет, если вы зад...
June 21, 2019, 8:31 a.m.
Ruslan Polupan

Вот моя строка по которой все отлично сработало %cqtdeployer% -bin c:/CentralMposKeys/CentalMposKeys.exe -qmake c:/Qt/5.12.2/mingw73_64/bin/qmake.exe
June 21, 2019, 8:24 a.m.
Андрей Янкович

Возможно кому то пригодится сqtdeployer для windows работает точно так же как и для Linux разница лишь в команде запуска Linux: cqtdeployer Windows: %cqtdeployer...
Now discuss on the forum
June 24, 2019, 2:36 p.m.
Михаиллл

Нашел проект подключения к вебсокету.Но по моему адресу не могу подключиться.Нужно ли для этого использовать библиотеки?Вы не знаете адрес вебсокета, на котором можно проверить с...
June 24, 2019, 2:07 p.m.
Евгений Легоцкой

Я пока даже не знаю, а какой код самого подключения? использовали ожидание на подключение? Так делали? socket->connectToServer("market");if (socket->waitForConnected(1000)) ...
June 24, 2019, 1:19 p.m.
IscanderChe

// widget.cpp#include "widget.h"#include <QTableView>#include <QVBoxLayout>#include "checkboxdelegate.h"#include "comboboxdelegate.h"#include "mytableview.h"#include <QSqlD...
June 24, 2019, 11:16 a.m.
BlinCT

Хорошо, с этим понятно. Вот есть такой набор каких то кнопок. Цифры отображают в каком порядке должен менятся фокус.1. Как правильнее сделать отображение активного обьекта...
e
June 24, 2019, 10:58 a.m.
evgenm27

Спасибо за ответ, буду пробовать
Looking for a Job?
10,000.00 руб. - 15,000.00 руб.
Нужен помощник для создания API.
Moscow, Moscow, Russia
25,000.00 руб. - 30,000.00 руб.
Разработчик Qt/C++
Barnaul, Altai Krai, Russia

For registered users on the site there is a minimum amount of advertising

EVILEG
About
Services
Join us
© EVILEG 2015-2019
Recommend hosting TIMEWEB