alex_lip
alex_lipNov. 1, 2018, 7:54 a.m.

Как открыть popup окно из делегата ListView

Собственно subj. Оказалось не так все просто.

Есть LIstView - внутри делегата есть mousearea в которой по клик - есть функция. Внутри должно сформироваться или вызваться окно(или диалог)


function vibor()
  {
  var popup1 = Qt.createQmlObject('import QtQuick 2.10; import QtQuick.Controls 2.3; Popup { id: popup; x: 100; y: 100; width: 200; height: 300; modal: true; focus: true; closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent; visible: false }',
     root_i,
  "DynamicPopup");
popup1.open();


Окошко открывается - но вываливается ошибка

QQmlContext: Cannot set context object on invalid context.

QQmlComponent: Cannot create a component in an invalid context


Я так понимаю это из-за привязки к root_i . Это у меня итем верхнего уровня, но он сам грузится через loader.

Когда я пытаюсь создать диалог на уровне root_i и затем вызвать его из делегата ListView через root_i.dialog.open() - ругается ,  что root_i не определен. Хотя к проперти уровня root_i доступ есть.



We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

9
Evgenii Legotckoi
  • Nov. 1, 2018, 8:02 a.m.

Если root_i живёт внутри объекта Loader, то скорее всего нужно будет так пытаться достучаться.

loader_id.item.root_i

Хотя я бы парентом для диалога сделал окно приложения, а в нём использовал бы set метод и установил бы нужную в него информацию.

    alex_lip
    • Nov. 1, 2018, 8:17 a.m.

    ====а в нём использовал бы set метод и установил бы нужную в него информацию.==== -  можно поподробнее

      Виталий Антипов
      • Nov. 1, 2018, 10:34 a.m.

      Я обычно делаю все необходимые popup-окна, у которых родителем окно приложения. Из ListView вызываю методом open(), как в примере документации.

        alex_lip
        • Nov. 2, 2018, 1:43 a.m.

        а как вы туда параметры передаете, если вызов происходит где-то из глубины на несколько  уровней объектов?

          Evgenii Legotckoi
          • Nov. 2, 2018, 6:25 a.m.

          каким-то образом вытаскивать сигналами вызов

          в QML тоже можно прописать сигнал

          signal mySignal;

          Также и с параметрами возможно прописать сигнал.


            Виталий Антипов
            • Nov. 2, 2018, 9:56 a.m.

            Храню параметры как свойства окна приложения (типа глобальных переменных). Они доступны и из делегата и из popup, при клике на элемент ListView присваиваю им необходимые значения, открываю popup. В нем, например, делаю какие-то действия, на стороне с++ через сигнал-слот обрабатываю, обновляю модель (например при редактировании бд).

              alex_lip
              • Nov. 6, 2018, 12:56 a.m.

              А сам popup на каком уровне(где) описываете. У меня он из ListView виден только если он на уровне ListView описан. Причем как

              var popup1 = Qt.createQmlObject(
              'import QtQuick 2.10; import QtQuick.Controls 2.3;
              Dialog
              {
                  id: popup;
                  x: 10; y: 10;
                  width:500;
                  height: 500;
                  focus: true;
                  visible: false
                  Text
                  {
              ........
              
              ,
                               loader,"DynamicPopup");



                alex_lip
                • Nov. 6, 2018, 2:52 a.m.

                ==Храню параметры как свойства окна приложения (типа глобальных переменных).==

                У меня они недоступны. Основное окно - вызывает loader - затем в лоадере сидит внешний файл(через импорт) - там уже в итемсе находится листвью. И из делегата этого ListView  неполучается достучаться к property главного окна приложения. Если только через сигнал слот из слоя C++

                  alex_lip
                  • Nov. 6, 2018, 5:31 a.m.
                  • The answer was marked as a solution.

                  В общем у меня получилось только при помощи динамического создания popup. В этом случае подхватывается все  - и модель и "глобальные" property


                  seaPhones.clear();
                  
                   seaPhones.append
                   seaPhones.append
                   seaPhones.append
                  
                     component = Qt.createComponent("../content/MyPopup.qml");
                      myDialog = component.createObject(root_i, {"x": 10, "y": 10, "opacity" :1, "visible": true});

                    Comments

                    Only authorized users can post comments.
                    Please, Log in or Sign up
                    AD

                    C ++ - Test 004. Pointers, Arrays and Loops

                    • Result:50points,
                    • Rating points-4
                    m

                    C ++ - Test 004. Pointers, Arrays and Loops

                    • Result:80points,
                    • Rating points4
                    m

                    C ++ - Test 004. Pointers, Arrays and Loops

                    • Result:20points,
                    • Rating points-10
                    Last comments
                    i
                    innorwallNov. 15, 2024, 1:27 p.m.
                    Release of C++/Qt and QML application deployment utility CQtDeployer v1.4.0 (Binary Box) optionally substituted alkoxy, optionally substituted alkenyloxy, optionally substituted alkynyloxy, optionally substituted aryloxy, OCH, OC H, OC H, OC H, OC H, OC H, OC H, O C CH, OCH CH OH, O…
                    i
                    innorwallNov. 15, 2024, 8:26 a.m.
                    Qt/C++ - Lesson 031. QCustomPlot – The build of charts with time buy generic priligy We can just chat, and we will not lose too much time anyway
                    i
                    innorwallNov. 15, 2024, 6:03 a.m.
                    Qt/C++ - Lesson 060. Configuring the appearance of the application in runtime I didnt have an issue work colors priligy dapoxetine 60mg revia cost uk August 3, 2022 Reply
                    i
                    innorwallNov. 14, 2024, 11:07 p.m.
                    Circuit switching and packet data transmission networks Angioedema 1 priligy dapoxetine
                    i
                    innorwallNov. 14, 2024, 10:42 p.m.
                    How to Copy Files in Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
                    Now discuss on the forum
                    i
                    innorwallNov. 14, 2024, 2:39 p.m.
                    добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
                    i
                    innorwallNov. 11, 2024, 9:55 p.m.
                    Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
                    9
                    9AnonimOct. 25, 2024, 7:10 p.m.
                    Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

                    Follow us in social networks