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

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

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Как создать такое меню (аля MacOS)  (Прочитано 17664 раз)
Bepec
Гость
« Ответ #15 : Июль 18, 2012, 10:13 »

Хм. Возможно возможно, но я этого монстра ещё не трогал Веселый
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #16 : Июль 18, 2012, 12:20 »

Ну а серьезно?
А серьезно - если такого компонента нет, то и связываться не стоит. "Как легко делать UI" - популярное мнение, но только до тех пор пока "пасемся на готовом". А как только оно кончается - мало не покажется. Один тут какой-то "titan ribbon" уже третий год пилит. Лучше смириться с тупенькой но удобной ролью пользователя готового.
Записан
OKTA
Гость
« Ответ #17 : Июль 18, 2012, 12:30 »

А на qml легко =)
Записан
DmitryM
Гость
« Ответ #18 : Июль 18, 2012, 14:59 »

А на qml легко =)
Это и на обычных виджетах не сложно.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #19 : Июль 18, 2012, 15:04 »

А на qml легко =)
Это и на обычных виджетах не сложно.
Ну так если легко - предъявляем что-то вразумительное. Или дальше слов дело не идет?  Улыбающийся
Записан
andrew.k
Гость
« Ответ #20 : Июль 18, 2012, 16:08 »

А на qml легко =)
Это и на обычных виджетах не сложно.
Ну так если легко - предъявляем что-то вразумительное. Или дальше слов дело не идет?  Улыбающийся
Ну так а что же в этом сложного?
Думаю, можно придумать много способов.
В любом случае, смысла отвечать на поставленный таким образом вопрос нет.
Это все равно что спросить "а как делается тема Риббон на qt?".
Это надо садиться и делать и уже в процессе задавать вопросы, когда что-то не получается.

Можно задать вопрос по-другому не "как?", а "с чего начать?". Но такого вопроса не было.
Записан
OKTA
Гость
« Ответ #21 : Июль 18, 2012, 18:39 »

Ну очень быстро! и кликается и все такое! И главное понятно, что можно много наширудить))

Код:
import Qt 4.7

Item {
    width: 400; height: 400

    ListView {
        id: list_view1
        x: 95
        y: 169
        width: 210
        height: 62
        orientation: ListView.Horizontal
        spacing: 50
        delegate: Item {
            id: item
            height: 40

            Text {
                id: textName
                text: name
                z: 2
                anchors.bottom: picture.top
                font.bold: true
            }

            Rectangle {
                id: picture
                width: 40
                height: 40
                color: colorCode

            }

            MouseArea {
                anchors.fill: picture
                hoverEnabled: true
                onEntered: SequentialAnimation {

                    NumberAnimation {
                        target: picture;
                        property: "scale";
                        to: 2;
                        duration: 100;
                        easing.type: Easing.InOutQuad
                    }

                }
                onExited: SequentialAnimation {

                    NumberAnimation {
                        target: picture;
                        property: "scale";
                        to: 1;
                        duration: 100;
                        easing.type: Easing.InOutQuad
                    }

                }
                onClicked: SequentialAnimation {

                    NumberAnimation {
                        target: picture;
                        property: "rotation";
                        from: 0
                        to: 180;
                        duration: 400;
                        easing.type: Easing.InOutQuad

                    }


                    NumberAnimation {
                        target: textName;
                        property: "rotation";
                        from: 0
                        to: 360;
                        duration: 400;
                        easing.type: Easing.InOutQuad

                    }

                }
            }



        }

        model: ListModel {
            ListElement {
                name: "Grey"
                colorCode: "grey"
            }

            ListElement {
                name: "Red"
                colorCode: "red"
            }

            ListElement {
                name: "Blue"
                colorCode: "blue"
            }

            ListElement {
                name: "Green"
                colorCode: "green"
            }
        }
    }


}
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


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


Просмотр профиля
« Ответ #22 : Июль 19, 2012, 11:03 »

Влезу в тему  Улыбающийся В этой задаче, одна из самых сложных проблем будет не увеличение иконок, а то что виджет на котором это все лежит должен быть с плюхами типа прозрачности там где нужно (что бы задать его геометрию), плюс он должен ловить отражение ни только от иконок, но и от окон в системе, вот что будет сложно реализовать. Опять же как правильно сделать "обрезание виджета" ? Если задавать маску, то не факт что иконки сверху будут торчать, даже скорее всего не будут, а если переопределить paintEvent и рисовать transparent где нужно, то опять же не факт что виджет будет прозрачный. Вобщем как мне думается тут не все так просто, всякие клики свистоперделки это даже не пол дела тут.
« Последнее редактирование: Июль 19, 2012, 11:09 от ecspertiza » Записан
OKTA
Гость
« Ответ #23 : Июль 19, 2012, 11:42 »

А зачем отражение системных окон? Все фишки и прозрачность, и обрезка, и отражение в нужных местах - совсем не проблема для qml.
Записан
DmitryM
Гость
« Ответ #24 : Июль 19, 2012, 12:14 »

Влезу в тему  Улыбающийся В этой задаче, одна из самых сложных проблем будет не увеличение иконок, а то что виджет на котором это все лежит должен быть с плюхами типа прозрачности там где нужно (что бы задать его геометрию), плюс он должен ловить отражение ни только от иконок, но и от окон в системе, вот что будет сложно реализовать. Опять же как правильно сделать "обрезание виджета" ? Если задавать маску, то не факт что иконки сверху будут торчать, даже скорее всего не будут, а если переопределить paintEvent и рисовать transparent где нужно, то опять же не факт что виджет будет прозрачный. Вобщем как мне думается тут не все так просто, всякие клики свистоперделки это даже не пол дела тут.
Прозрачность. Для отражение иконок можно взять QPixmap из иконки, перевернуть, обрезать, сделать прозрачным и т.д.
Записан
OKTA
Гость
« Ответ #25 : Июль 19, 2012, 12:18 »

давайте объявим конкурс, кто быстрее напишет dock на том, что ему нравится =DDD
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


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


Просмотр профиля
« Ответ #26 : Июль 19, 2012, 12:32 »

А зачем отражение системных окон? Все фишки и прозрачность, и обрезка, и отражение в нужных местах - совсем не проблема для qml.

Ну вот я сейчас смотрю на  Mac OS 10.7.4 и вижу отражение системных окон в доке  Улыбающийся Еще мне очень интересно посмотреть как можно на qml сделать обрезание виджета Улыбающийся С отражением иконки согласен, сделать несложно, но как можно на qml сделать прозрачность виджета я не представляю, какой нибудь Rectangle да, не вопрос, но виджет ! То же с обрезанием виджета.

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

По своим задачам часто натыкался на эту статью, ни разу не вышло сделать так что бы виджет был прозрачным и сквозь него было видно систему, если есть парент виджет и на нем лежит дочерний, то у дочернего сделать не вопрос, но у родителя ни разу не получалось, только заданием маски. Можно пример кода глянуть где это реализовано без маски ? Так как такая задача периодически всплывает ,а решение ни как найти не могу. Знаю что можно еще использовать setWindowOpaticy() ,но тогда и все предки будут прозрачные.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #27 : Июль 19, 2012, 12:46 »

По своим задачам часто натыкался на эту статью, ни разу не вышло сделать так что бы виджет был прозрачным и сквозь него было видно систему, если есть парент виджет и на нем лежит дочерний, то у дочернего сделать не вопрос, но у родителя ни разу не получалось, только заданием маски. Можно пример кода глянуть где это реализовано без маски ? Так как такая задача периодически всплывает ,а решение ни как найти не могу. Знаю что можно еще использовать setWindowOpaticy() ,но тогда и все предки будут прозрачные.

Взгляни на Qt::WA_TranslucentBackground.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


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


Просмотр профиля
« Ответ #28 : Июль 19, 2012, 12:57 »

Взгляни на Qt::WA_TranslucentBackground.

Работает, спасибо  Улыбающийся Остальное вроде тогда становится понятным, подложку под иконками рисуем, там же рисуем отражение от иконки. Обрезать в таком случае ничего не нужно получается, остальное математика. Ну единственное будет проблематично отражение системных окон сделать, хотя это больше фича. Вот собственно ТС и задали направление для работы  Улыбающийся
Записан
OKTA
Гость
« Ответ #29 : Июль 19, 2012, 13:00 »

Так, а что подразумевается под обрезанием?))
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


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