Russian Qt Forum

Qt => Qt Quick => Тема начата: BuRn от Февраль 10, 2013, 13:20



Название: Rectangle + grid
Отправлено: BuRn от Февраль 10, 2013, 13:20
Есть несколько Rectangle-ов, каждый представляет собой кнопку, расположены они в гриде. Делаю что - то типа калькулятора.Сделал так, что бы при нажатии на кнопку она увеличивалась  и возвращала свое состояние в исходное. Но вот столкнулся с проблемой , что сама кнопка, при увеличении находится не поверх остальных , т.е. кнопка которая находится ниже , перекрывает кнопку которая увеличивается, хотелось бы , что бы мой ректангл, увеличивался в размерах и перекрывал все остальные элементы, со всех сторон. Спасибо


Название: Re: Rectangle + grid
Отправлено: twp от Февраль 10, 2013, 13:54
для этого достаточно установить свойство кнопки z = 1 и потом вернуть обратно в 0


Название: Re: Rectangle + grid
Отправлено: BuRn от Февраль 10, 2013, 13:55
для этого достаточно установить свойство кнопки z = 1 и потом вернуть обратно в 0
Потом это когда ?
Вы предлагаете перед анимацией устанавливать свойство и после его восстанавливать в исходное состояние ?


Название: Re: Rectangle + grid
Отправлено: twp от Февраль 10, 2013, 13:56
для этого достаточно установить свойство кнопки z = 1 и потом вернуть обратно в 0
Вы предлагаете перед анимацией устанавливать свойство и после его восстанавливать в исходное состояние ?
да


Название: Re: Rectangle + grid
Отправлено: BuRn от Февраль 10, 2013, 13:59
для этого достаточно установить свойство кнопки z = 1 и потом вернуть обратно в 0
Вы предлагаете перед анимацией устанавливать свойство и после его восстанавливать в исходное состояние ?
да
Эм... ну тогда не понятно с какого края устанавливать Z , ибо в 1 сроке у меня 3 элемента, если я пробую устанвливать у одного из них Z в дизайнере QML, тогда тот элемент на который я установил Z перекрывает все, а рядом элементы, получаются под ним...


Название: Re: Rectangle + grid
Отправлено: twp от Февраль 10, 2013, 18:04
что бы мой ректангл, увеличивался в размерах и перекрывал все остальные элементы, со всех сторон.
Разве это не то что нужно?


Название: Re: Rectangle + grid
Отправлено: BuRn от Февраль 11, 2013, 19:50
что бы мой ректангл, увеличивался в размерах и перекрывал все остальные элементы, со всех сторон.
Разве это не то что нужно?
Проблема в том , что я не могу сделать так, что бы в гриде каждый элемент перекрывал при увеличении друг друга, если у меня удается сделать 1 какой - то элемент, то при нажатии на рядом стоящий, он увеличивается, но край или даже несколько краев находится под рядом стоящими элементами.Стоит сделать другой элемент , поверх остальных , рядом элементы ведут себя не так как нужно


Название: Re: Rectangle + grid
Отправлено: twp от Февраль 11, 2013, 21:04
я что-то не совсем понял. При нажатии на кнопку ты устанавливаешь ей z = 1 и после отпускания кнопки возвращаешь в 0 - так? Или ты хочешь прям в дизайнере установить z? Может проще просто посмотреть документацию (http://doc.qt.digia.com/4.7-snapshot/qml-item.html#z-prop) где на пальцах картинках объясняется когда объекты перекрывают друг-друга и как задать нужное перекрытие свойством z


Название: Re: Rectangle + grid
Отправлено: OKTA от Февраль 11, 2013, 21:47
Разве не то?

Код:
import QtQuick 1.0

Rectangle {
    height: 500
    width: 500



    GridView {
        id: view
        width: 300;
        height: 200
        cellWidth: 100;
        cellHeight: 100

        model: ListModel {
            ListElement {}
            ListElement {}
            ListElement {}
            ListElement {}
            ListElement {}
            ListElement {}
        }

        delegate: Rectangle {
            color: "magenta"
            width: 100
            height: 100
            border.color: "black"
            Behavior on width {
                NumberAnimation {
                    duration: 1000
                }
            }
            Behavior on height {
                NumberAnimation {
                    duration: 1000
                }
            }

            MouseArea {
                anchors.fill: parent
                hoverEnabled: true
                onEntered: {
                    parent.width = 200
                    parent.height = 200
                    parent.z = 28
                }
                onExited: {
                    parent.width = 100
                    parent.height = 100
                    parent.z = 0
                }
            }

        }

        focus: true
    }

}