Russian Qt Forum

Qt => Qt Quick => Тема начата: lighting от Январь 26, 2012, 16:08



Название: Нубский вопрос по qml
Отправлено: lighting от Январь 26, 2012, 16:08
но что-то не пойму где на него ответ найти можно.
Есть простенький пример:

Код
Javascript
Item {
   width: 360
   height: 360
   Rectangle {
       id: cropFrame
       width: parent.width/2
       height: parent.height/2
       color: "#00000000"
       radius: 2
       border.color: "#3654b5"
   }
 
   MouseArea {
       anchors.fill: parent
       onPressed: {
           cropFrame.border.width: 4          
       }
       onReleased: {
           cropFrame {border.width: 2}
       }
   }
}
 
Хочу чтобы при нажатии рамка у cropFrame увеличивалась, а при отпускании восстанавливалась обратно. Оба написанные мною варианта неверные, как это правильно написать?


Название: Re: Нубский вопрос по qml
Отправлено: ecspertiza от Январь 26, 2012, 16:41
поправил  ;)

Код:
import QtQuick 1.0

Item {
    width: 360
    height: 360
    Rectangle {
        id: cropFrame
        width: parent.width/2
        height: parent.height/2
        color: "#00000000"
        radius: 2
        border.color: "#3654b5"
    }
 
    MouseArea {
        anchors.fill: parent
        onPressed: {
            cropFrame.border.width = 4           
        }

        onReleased: {
            cropFrame.border.width = 2
        }
    }
}


Название: Re: Нубский вопрос по qml
Отправлено: lighting от Январь 26, 2012, 16:54
большое спасибо!
как я и ожидал все просто :)


Название: Re: Нубский вопрос по qml
Отправлено: lighting от Январь 27, 2012, 09:14
показанный тобой случай это присвоение, а связывание так реализовать можно?


Название: Re: Нубский вопрос по qml
Отправлено: ecspertiza от Январь 27, 2012, 14:28
Вроде нет, только если через State , но через него только кода больше выйдет :)


Название: Re: Нубский вопрос по qml
Отправлено: lighting от Январь 27, 2012, 15:25
продолжу нубские вопросы.
Хочу сделать элемент у которого можно менять размеры тягая за угол, казалось-бы все просто:
onPressed:
запоминаем положение курсора и размеры элемента

onPositionChanged:
 вычисляем dx dy, сдвигаем на них наш элемент и увеличиваем на них-же высоту и ширину.

Однако создать временные переменные у меня почему-то не получилось, точнее они не видны из onPositionChanged
пробовал создать так: var int xpos = mouseX;


Название: Re: Нубский вопрос по qml
Отправлено: ecspertiza от Январь 27, 2012, 17:44
с помощью var int xpos = mouseX; создать переменную можно только внутри ф-ции, и то даже по моему только так

Код:
var xpos = mouseX;

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


Название: Re: Нубский вопрос по qml
Отправлено: twp от Январь 27, 2012, 22:45
показанный тобой случай это присвоение, а связывание так реализовать можно?
Код
Javascript
import QtQuick 1.0
 
Item {
   width: 360
   height: 360
   Rectangle {
       id: cropFrame
       width: parent.width/2
       height: parent.height/2
       color: "#00000000"
       radius: 2
       border.color: "#3654b5"
       border.width: mouseArea.pressed ? 4 : 2
   }
 
   MouseArea {
       id: mouseArea
       anchors.fill: parent
   }
}
 


Название: Re: Нубский вопрос по qml
Отправлено: Nimbus от Февраль 08, 2012, 11:36
Продолжу нубские вопросы.
Как организовать загрузку данных в ListModel в другом потоке? А то сейчас всё в одном GUI-потоке и модель (QList<QObject*>) загружается в нём же, и передаётся контексту qml, и получается неприятный эффект зависания приложения на несколько секунд. А так хотя бы какой-нибудь BusyIndicator анимированный можно было поставить.
Костыль в виде qApp->processEvents() не годится, и заморачиваться с QThread тоже нет особого желания.
Есть WorkerScript но проблема, что ему нельзя передавать QObject* никакие, чтобы он дёргал их Q_INVOKABLE-методы.


Название: Re: Нубский вопрос по qml
Отправлено: OKTA от Февраль 08, 2012, 12:34
Ты проблему опиши лучше, код приложи =)


Название: Re: Нубский вопрос по qml
Отправлено: OKTA от Февраль 08, 2012, 15:46
Вот кстати у меня тоже вопрос про WorkerScript!
Ситуация следующая! Мне надо из c++ передавать данные в компонент qml-вский, который лежит глубоко в иерархии интерфейса. Как понимаю передать их можно через сигналы через головной элемент, который объявлен в c++ или же через собственный декларативный класс,  так? А что если    мне надо эти данные мне надо еще и обработать в qml? Где запускать WorkerScript?) в головном компоненте или можно в том самом глубоком, которому данные и предназначаются??


Название: Re: Нубский вопрос по qml
Отправлено: ecspertiza от Февраль 09, 2012, 12:16
Продолжу нубские вопросы.
Как организовать загрузку данных в ListModel в другом потоке? А то сейчас всё в одном GUI-потоке и модель (QList<QObject*>) загружается в нём же, и передаётся контексту qml, и получается неприятный эффект зависания приложения на несколько секунд. А так хотя бы какой-нибудь BusyIndicator анимированный можно было поставить.
Костыль в виде qApp->processEvents() не годится, и заморачиваться с QThread тоже нет особого желания.
Есть WorkerScript но проблема, что ему нельзя передавать QObject* никакие, чтобы он дёргал их Q_INVOKABLE-методы.

Тут два варианта либо QThread либо QtConcurrent  :)