alex_lip
March 20, 2018, 1:21 p.m.

Картинка на картинке внутри column

Добрый день.
Есть row - внутри нее column - внутри column - две картинки - одна под другой - как бы сделать так, чтобы нижняя картинка немного наезжала на верхнюю(то есть поднять ее на 2- пикселов, чтобы она перекрыла низ верхней картинки). Anchors.topMargin: -20; - не работает.

3

Do you like it? Share on social networks!

17
Evgenii Legotckoi
  • March 20, 2018, 1:47 p.m.
  • The answer was marked as a solution.

Добрый день!

Якоря в row и column как правило либо не работают вовсе, зависит от версий библиотек, либо работают только в одно направлении, Для row это только ось y, для column это ось x.

В рамках вашей задачи вам придётся отказаться от row и column вовсе. Не получится реализовать такое с их помощью.
Поместите оба изображения в Item, а в нём уже позиционируйте с помощь якорей изображения так, как Вам нужно.

Item {
    id: root

    Item {
        id: first
        anchors {
            top: parent.top
            left: parent.left
            right: parent.right
        }
    }
    Item {
        id: second
        anchors {
            top: first.bottom
            topMargin: -20
            left: parent.left
            right: parent.right
        }
    }
}
То есть вместо column используйте такой Item, в котором с помощью якорей будете позиционировать изображения так, как Вам необходимо.

Сам по себе объект column для такого, что вы хотите сделать, не предназначен.
    alex_lip
    • March 20, 2018, 2 p.m.

    Спасибо. Я так и думал (( Я только начал графикой в QML интересоваться. Не подскажете куда посмотреть для начала? Примеры - Ваши уроки - и т.д. Я почему спрашиваю - столкнулся с тем, что QtQuick 2 - сильно отличается от предыдущих версий и старые примеры только путают(например отстутствие Style) .

      Evgenii Legotckoi
      • March 20, 2018, 2:08 p.m.

      Да, QtQuick 2 сильно отличается, ничего не поделаешь, но он значительно лучше.
      Лучше скажите, что конкретно хотите делать. Проще будет подсказать. Ещё заглядывайте в раздел Android . Я понемногу сейчас пишу сравнительные статьи и там именно на новом QtQuick 2 всё сделано.

        alex_lip
        • March 20, 2018, 2:21 p.m.

        Хочу со спрайтами разобраться. Хочу понять для чего нужен image provider. Как показать галерею на андроиде и ios.

          Evgenii Legotckoi
          • March 20, 2018, 2:31 p.m.

          Про спрайты - это можете почитать вот эти статьи спокойно.

          1. https://evileg.com/post/177/
          2. https://evileg.com/post/310/
          А что касается галереи - это интересно... но такой статьи у меня нет. Надо будет подумать о её написании, со временем и самому может понадобиться галерея.

          Что касается Image Provider, то как я понял из документации, то это что-то вроде универсального провайдера изображений, с помощью которого можно предоставлять изображения в необходимом качестве в зависимости от запрошенного размера, я только сразу не нашёл ещё как его установить правильно в приложение.
            alex_lip
            • March 20, 2018, 3:58 p.m.

            Спасибо!

            Про image provider есть пример - но он у меня не запускается.

              Evgenii Legotckoi
              • March 20, 2018, 4:05 p.m.

              Хорошо, что пример есть, надо будет глянуть. На первый взгляд по документации там ничего сложного нет. Возможно, что сам по себе пример устаревший в Qt Creator

                alex_lip
                • March 20, 2018, 6:39 p.m.

                Прочитал статью https://evileg.com/post/310/ - пытаюсь на объекте где есть mouse click повесить

                                            TapHandler {
                                                   // gesturePolicy : TapHandler.DragThreshold
                longPressThreshold:2 onTapped: console.log("longPressThreshold") }
                Долгое нажатие не перехватывается. Вы пробовали использовать данное событие?


                  Evgenii Legotckoi
                  • March 20, 2018, 7:15 p.m.

                  Обработчик не тот используете, нужно использовать onLongPressed

                  Item {
                          anchors.fill: parent
                  
                          TapHandler {
                              longPressThreshold: 10.0
                              onTapped: console.log("standard press")
                              onLongPressed: console.log("long press")
                          }
                      }
                    alex_lip
                    • March 20, 2018, 7:33 p.m.

                    Отлично. Можно вместо  onClicked: использовать там где надо клик и долгое нажатие.

                      Evgenii Legotckoi
                      • March 20, 2018, 7:36 p.m.

                      Ага. При этом TapHandler Выступает в качестве присоединяемого объекта, которых, как я понял, может быть несколько. А это значит, что можно контролировать несколько степеней долгого нажатия, например. Это гораздо удобнее, чем прикручивать MouseArea. Посколько наложение нескольких MouseArea неминуемо приводило к конфликтам при передаче сигнала от выше стоящей MouseArea к ниже стоящей.

                        alex_lip
                        • March 22, 2018, 12:46 p.m.

                        Не получилось два TapHandler на одим Item повесить - по LongPress срабатывает только первый


                                                                        Item {
                                                                            anchors.fill: parent
                        
                                                                            TapHandler {
                                                                                longPressThreshold: 2.0
                                                                                onTapped: {
                                                                                    view_nazn_isp.currentIndex = model.index
                                                                                    console.log(text_nazn_isp.text)
                                                                                  }
                                                                                onLongPressed:
                                                                                {
                                                                                    //Qt.openUrlExternally("tel:%1".arg(phone)) ;
                                                                                    Qt.openUrlExternally("tel:89999999") ;
                                                                                    console.log("long press 2")
                                                                                }
                                                                            }
                                                                            TapHandler {
                                                                                longPressThreshold: 4.0
                                                                                onLongPressed:
                                                                                {
                                                                                    //Qt.openUrlExternally("tel:%1".arg(phone)) ;
                                                                                    Qt.openUrlExternally("tel:80000000") ;
                                                                                    console.log("long press 4")
                                                                                }
                                                                            }



                          Evgenii Legotckoi
                          • March 22, 2018, 2:20 p.m.

                          Значит всё-таки не взлетело... ну остаётся только пометить этот момент в памяти и придумывать иные ухищрения, если всё-таки потребуется такой функционал.

                            alex_lip
                            • March 22, 2018, 2:26 p.m.

                            Сделал через tapcount - тоже прикольно


                                                                                TapHandler {
                                                                                    longPressThreshold: 0.7
                                                                                    onTapped:
                                                                                      if (tapCount == 3)
                                                                                      {
                                                                                          Qt.openUrlExternally("tel:"+mobila) ;
                                                                                          console.log("tap count 3")
                                                                                      }
                                                                                    else
                                                                                    {
                                                                                        view_nazn_isp.currentIndex = model.index
                                                                                        console.log(text_nazn_isp.text)
                                                                                    }
                                                                                    onLongPressed:
                                                                                    {
                                                                               
                                                                                        Qt.openUrlExternally("tel:"+phone) ;
                                                                                        console.log("long press 2")
                                                                                    }
                                                                                }



                              Evgenii Legotckoi
                              • March 22, 2018, 2:29 p.m.

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

                                alex_lip
                                • March 22, 2018, 2:31 p.m.
                                • (edited)

                                тройной тап - это недокументированная функция для доступа к мобильному номеру))

                                Для пользователя возможно будет понятен двойной тап и долгое нажатие
                                А так - конечно контекстное меню все-таки лучше всего. Правда его я пока не пробовал.

                                  Evgenii Legotckoi
                                  • March 22, 2018, 2:33 p.m.

                                  ха ха.. Это как на Honor 8 нужно в настройках на идентификатор телефона нажать семь раз, чтобы получить доступ к режиму разработчика.

                                    Comments

                                    Only authorized users can post comments.
                                    Please, Log in or Sign up
                                    • Last comments
                                    • AK
                                      April 1, 2025, 11:41 a.m.
                                      Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
                                    • Evgenii Legotckoi
                                      March 9, 2025, 9:02 p.m.
                                      К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
                                    • VP
                                      March 9, 2025, 4:14 p.m.
                                      Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
                                    • ИМ
                                      Nov. 22, 2024, 9:51 p.m.
                                      Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                                    • Evgenii Legotckoi
                                      Oct. 31, 2024, 11:37 p.m.
                                      Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup