Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Upcoming QtCreator support for Qml, QtCreator обзавелся дизайнером qml и ... 
:(
    Опции темы
W4FhLF
Дата 1.2.2010, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 4
Всего: 121



SABROG, это ж бета, какие тут могут быть претензии?)

Вот сегодня я читал про клиент для vkontakte без единой строки на С++, только JS и QML. И с кнопочками разными, полями ввода, там всё ок smile 

Плюс советую посмотреть examples. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
SABROG
Дата 1.2.2010, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(W4FhLF @  1.2.2010,  12:40 Найти цитируемый пост)
SABROG, это ж бета, какие тут могут быть претензии?)

Да это так, больше для себя. Просто думал подожду пока релиз выйдет, и правильно думал.

Цитата(W4FhLF @  1.2.2010,  12:40 Найти цитируемый пост)
Вот сегодня я читал про клиент для vkontakte без единой строки на С++, только JS и QML. И с кнопочками разными, полями ввода, там всё ок smile 

Почитал и я этот блог. Всё что я могу сказать, так это то, что это очередной демо-клон. Практически ничего нового я тут не увидел. Всё тот же черный интерфейс с IPhone-style кнопками. Даже background не удосужились поменять, содрали откуда-то, не помню уже. Всё тот же список с иконками как в демке flicker. Ну и используется весь доступный арсенал из "Basic Visual Items". Фантазии не видно.

В то время как в репозитории примеров kinetic declarative уже есть дополнительные графические элементы типа progressbar'a, tabwidget'a.
---
Упс...

user posted image

Это сообщение отредактировал(а) SABROG - 1.2.2010, 15:39


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Sovereign
Дата 1.2.2010, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 7.11.2006

Репутация: 1
Всего: 4



Цитата(SABROG @ 29.1.2010,  12:42)
Я подозреваю, что сначала им придется сделать толпу примитивов и базовых контролов, после чего им придется начать разработку аналога Macromedia Flash...

а впринципе то svg есть, встроенный скрипт тоже, остается только визуальный редактор svg и вуаля... smile  ну эт я так...
PM MAIL   Вверх
chaos
Дата 1.2.2010, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 5
Всего: 44



офтоп + придираюсь
Цитата(W4FhLF @  31.1.2010,  11:56 Найти цитируемый пост)
Советую почитать. Работаем с моделями в QML
\

статья авно полное. модели разве начинаются с XML моделей? начинающему думаю совсем не понятен смысл статьи был


PM WWW   Вверх
SABROG
Дата 1.2.2010, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Я вот с какими трудностями столкнулся. Градиенты только вертикальные, в документации говорится - переворачивайте rect, чтобы получить горизонтальные. Если последовать их совету, то начинаются последствия. Height теперь у нас width, widht теперь height, а MouseRegion теперь возвращает внутренние координаты курсора мыши. Поднимая курсор вверх - Y координаты курсора растет, вместого того, чтобы падать, двигаем курсор вправо (по X), координата мыши Y - растет, что уже менее страшно. Я подумал и решил прибегнуть к такому ходу, создать rect, а в него впихнуть перевернутый rect с градиентом, в самом конце блока родительского rect'a создается MouseRegion, который накладывается поверх ребенка (кто последний объявлен тот на самом верху по Z), в итоге все координаты приходят нормально. Но, как например локальные координаты мыши перевести в глобальные? Как получать глобальные x,y мыши, когда происходит dragging по сцене? Я таких методов не нашел. Пока есть мысль ловить onX/YChanged, брать top left координату итема и прибавлять локальные координаты курсора на ректе.
---
Всё-таки проблема осталась. Я не могу найти способа растянуть дочерний рект на всю область родителя, после того как сделал ребенку rotate на 90 градусов. Не авторесайзится, а тупо вылазит за пределы.

Это сообщение отредактировал(а) SABROG - 2.2.2010, 00:20


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
revers
Дата 2.2.2010, 06:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 28.1.2010

Репутация: нет
Всего: нет



Цитата

Всё-таки проблема осталась. Я не могу найти способа растянуть дочерний рект на всю область родителя, после того как сделал ребенку rotate на 90 градусов. Не авторесайзится, а тупо вылазит за пределы.

По умолчанию origin {x;y} у Rotation - (0;0), поэтому и вылазит.

С мэпингом координат тоже не могу разобраться. Пытался копать в сторону QGraphicsWidget, засунутого в GraphicsObjectContainer. Вроде как у QGraphicsWidget должны быть функции mapTo*(), mapFrom*(), но что-то не выходит...
PM MAIL   Вверх
SABROG
Дата 2.2.2010, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Также пытался найти способ сменить курсор у мыши средствами QML. Естественно не нашел. Думаю его и не будет, т.к. QML больше ориентирован на мобильники о чем говорит обилие скинов в qmlviewer.

Вообще есть ли какой-нибудь способ заставить родителя "поглощать" ребенка также как это делают обычные виджеты, т.е. не рисовать его полностью на экране, если он вылазит за пределы предка?
---
Еще одну особенность обнаружил. Свойство visible работает только один раз - при создании итема. Если менять его в процессе работы программы, то ничего не происходит. Свойство opacity:0 вырубает встроенный MouseRegion, поэтому на элементе с 0 прозрачностью не срабатывают onEnter и onExit.
---
Еще одна вещь. При свойстве hoverEnabled в метод onPositionChanged приходит событие даже когда мышь не двигалась, а была нажата клавиша (clicked).

Это сообщение отредактировал(а) SABROG - 2.2.2010, 14:50


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
revers
Дата 2.2.2010, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 28.1.2010

Репутация: нет
Всего: нет



Цитата

Вообще есть ли какой-нибудь способ заставить родителя "поглощать" ребенка также как это делают обычные виджеты, т.е. не рисовать его полностью на экране, если он вылазит за пределы предка?

Ставь свойство clip в true.

Цитата

Еще одну особенность обнаружил. Свойство visible работает только один раз - при создании итема. Если менять его в процессе работы программы, то ничего не происходит. 

Код

import Qt 4.6

Rectangle {
    width: 500
    height: 500
    Rectangle {
        id: rect
        width: 200; height: 300
        anchors.centerIn: parent
        smooth: true
        gradient: Gradient {
            GradientStop { position: 0.0; color: "red" }
            GradientStop { position: 1.0; color: "blue" }
        }
        transform: Rotation {
            angle: 90
            origin.x: 100; origin.y: 150
        }
        MouseRegion {
            anchors.fill: parent
            hoverEnabled: true
            onPositionChanged: {
                console.log("x: " + mouse.x + " y: " + mouse.y)
            }
            onClicked: {
//                rect.visible = rect.visible ? false : true;
//                rect.opacity = rect.opacity == 1.0 ? 0.001 : 1.0
            }
        }
        Timer {
            interval: 500; repeat: true; running:true
            onTriggered: rect.visible = rect.visible ? false : true
        }
    }
}


В этом коде работает как надо: мигает по таймеру.

Цитата

Свойство opacity:0 вырубает встроенный MouseRegion, поэтому на элементе с 0 прозрачностью не срабатывают onEnter и onExit.

Можно ставить 0.001, вроде не заметно.
PM MAIL   Вверх
SABROG
Дата 2.2.2010, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Твой пример у меня работает нормально. Вставляю в те же обработчики у себя - ничего не работает. Меняю visible на opacity - все работает. Мистика какая-то.

Код

import Qt 4.6

Rectangle {
    id: mainRect
    width: 200
    height: 200

    MouseRegion {
        id: mrMainRect
        anchors.fill: parent
        hoverEnabled: true
        onPositionChanged: {
            console.log('MainRect X: ' + mouse.x + ' Y: ' + mouse.y)
        }
    }

        Rectangle {
            id: Widget
            x: 10
            y: 10
            width: 117
            height: 110

            color: "#d2d6c9"
            MouseRegion {
                id: mrWidget
                anchors.fill: parent
                hoverEnabled: true

                onClicked: {
                    console.log('clicked');
                    corner.visible = corner.visible? false : true;
                }


            }

            border.width: 1
            effect: DropShadow {
                yOffset: 5
                xOffset: 5
                blurRadius: 16
            }

            Rectangle {
                id: corner
                property bool isDragging: false
                property int startDrag: 0;
                anchors.right: parent.right
                anchors.bottom: parent.bottom
                anchors.rightMargin: 2
                anchors.bottomMargin: 2
                color: 'red'
                width: 10
                height: 10
                //opacity: 0
            }

        }
}



---
Похоже нашел проблему, если убрать эффект, то всё работает:

Код

            effect: DropShadow {
                yOffset: 5
                xOffset: 5
                blurRadius: 16
            }


Это сообщение отредактировал(а) SABROG - 2.2.2010, 18:12


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
revers
Дата 2.2.2010, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 28.1.2010

Репутация: нет
Всего: нет



Можно не убирать, а кое-что добавить, но получится явно костыль.
В слот onClicked mrWidget'а добавить 
Код

dsEffect.enabled = false; dsEffect.enabled = true;

где dsEffect - DropShadow
PM MAIL   Вверх
SABROG
Дата 2.2.2010, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(revers @ 2.2.2010,  19:11)
Можно не убирать, а кое-что добавить, но получится явно костыль.
В слот onClicked mrWidget'а добавить 
Код

dsEffect.enabled = false; dsEffect.enabled = true;

где dsEffect - DropShadow

Тут какая-то проблема с перерисовкой получается, т.к. если рект подвигать, то всё отрисовывается. К сожалению я не нашел таких методов как update()/repaint(). Багрепорт отправил троллям.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
revers
Дата 2.2.2010, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 28.1.2010

Репутация: нет
Всего: нет



Цитата

Тут какая-то проблема с перерисовкой получается, т.к. если рект подвигать, то всё отрисовывается.

Эм... не понял. В чем проблема-то?
PM MAIL   Вверх
SABROG
Дата 2.2.2010, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(revers @ 2.2.2010,  21:52)
Цитата

Тут какая-то проблема с перерисовкой получается, т.к. если рект подвигать, то всё отрисовывается.

Эм... не понял. В чем проблема-то?

В том, что при DropShadow эффекте рект перестает перерисовываться, а изменение свойства visible перерисовку не вызывает.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
revers
Дата 3.2.2010, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 28.1.2010

Репутация: нет
Всего: нет



Чуток переделал твой код. По клику меняется visible. У меня все прекрасно перерисовывается. Кстати версия декларэйтива у меня из мастер ветки.
Код

import Qt 4.6

Rectangle {
    id: mainRect
    width: 200
    height: 200

    MouseRegion {
        id: mrMainRect
        anchors.fill: parent
        hoverEnabled: true
        onPositionChanged: {
            console.log('MainRect X: ' + mouse.x + ' Y: ' + mouse.y)
        }
        onClicked: {
            console.log('clicked');
            Widget.visible = Widget.visible ? false : true;
            dsEffect.enabled = false; dsEffect.enabled = true;
        }
    }
    Rectangle {
        id: Widget
        x: 10
        y: 10
        width: 117
        height: 110
        color: "#d2d6c9"
        MouseRegion {
            id: mrWidget
            anchors.fill: parent
            hoverEnabled: true
            drag.target: Widget
            drag.axis: "XandYAxis"
            drag.minimumX: 0; drag.maximumX: 100
            drag.minimumY: 0; drag.maximumY: 100
        }
        border.width: 1
        effect: DropShadow {
            id: dsEffect
            yOffset: 5
            xOffset: 5
            blurRadius: 16
        }
        Rectangle {
            id: corner
            color: 'red'
            width: 10
            height: 10
            MouseRegion {
                anchors.fill: parent
                hoverEnabled: true
                drag.target: corner
                drag.axis: "XandYAxis"
                drag.minimumX: 1; drag.maximumX: 107
                drag.minimumY: 1; drag.maximumY: 100
            }
        }
    }
}

PM MAIL   Вверх
SABROG
Дата 3.2.2010, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Может кто видел, есть ли такая возможность присвоить геометрию одного rect'a другому, чтобы не приходилось писать портянки?

Код

rect1.x = rect2.x;
rect1.y = rect2.y;
rect1.width = rect2.width;
rect1.height = rect2.height;


В Qt это решалось манипуляциями c QRect'ом.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0697 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.