Russian Qt Forum
Май 14, 2024, 14:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Нубский вопрос по qml  (Прочитано 6698 раз)
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 увеличивалась, а при отпускании восстанавливалась обратно. Оба написанные мною варианта неверные, как это правильно написать?
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #1 : Январь 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
        }
    }
}
Записан
lighting
Гость
« Ответ #2 : Январь 26, 2012, 16:54 »

большое спасибо!
как я и ожидал все просто Улыбающийся
Записан
lighting
Гость
« Ответ #3 : Январь 27, 2012, 09:14 »

показанный тобой случай это присвоение, а связывание так реализовать можно?
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #4 : Январь 27, 2012, 14:28 »

Вроде нет, только если через State , но через него только кода больше выйдет Улыбающийся
Записан
lighting
Гость
« Ответ #5 : Январь 27, 2012, 15:25 »

продолжу нубские вопросы.
Хочу сделать элемент у которого можно менять размеры тягая за угол, казалось-бы все просто:
onPressed:
запоминаем положение курсора и размеры элемента

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

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

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #6 : Январь 27, 2012, 17:44 »

с помощью var int xpos = mouseX; создать переменную можно только внутри ф-ции, и то даже по моему только так

Код:
var xpos = mouseX;

думаю в данном случае тебе нужно будет сохранять позиции, для этого юзай property.
Записан
twp
Гость
« Ответ #7 : Январь 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
   }
}
 
Записан
Nimbus
Гость
« Ответ #8 : Февраль 08, 2012, 11:36 »

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

Ты проблему опиши лучше, код приложи =)
Записан
OKTA
Гость
« Ответ #10 : Февраль 08, 2012, 15:46 »

Вот кстати у меня тоже вопрос про WorkerScript!
Ситуация следующая! Мне надо из c++ передавать данные в компонент qml-вский, который лежит глубоко в иерархии интерфейса. Как понимаю передать их можно через сигналы через головной элемент, который объявлен в c++ или же через собственный декларативный класс,  так? А что если    мне надо эти данные мне надо еще и обработать в qml? Где запускать WorkerScript?) в головном компоненте или можно в том самом глубоком, которому данные и предназначаются??
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #11 : Февраль 09, 2012, 12:16 »

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

Тут два варианта либо QThread либо QtConcurrent  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.06 секунд. Запросов: 19.