Сергей Баженов
Сергей БаженовҚар. 21, 2017, 4:04 Т.Ж.

как отключить событие при открытии формы?

как обойти проблему: см. комментарий кода - может кто подскажет.

TableView {
    id: table
    model: tableModel
    anchors.fill: parent
    focus: true

    Component.onCompleted: {
        for (var i = 0; i <= 2; i++) {
            tableModel.append({
                "Tone": i,
                "Lenght": 5,
                "Alt": 0,
                "Chord": i != 0
            });
        }
    }

    TableViewColumn {
        role: "Tone"
        title: "Tone"
        width: 95
        delegate: ComboBox {
            model: ["Pause", "I", "II", "III", "IV", "V", "VI", "VII", "Random", "Chord"]
            anchors.fill: parent
            currentIndex: styleData.value
            onCurrentIndexChanged: {
                //убивает начальные установки, установленные событием Component.onCompleted:
                //при интерактивном выборе работает правильно 
                tableModel.setProperty(styleData.row, styleData.role, currentIndex)
            }
        }
    }
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

6
Evgenii Legotckoi
  • Қар. 21, 2017, 5:23 Т.Қ.
  • (өңделген)
  • Жауап шешім ретінде белгіленді.

Получается, что делегат при создании переопределяет свойства элемента модели.

Можно, когда делегат будет создан, просто подключить коннект через дополнительный сигнал.
Будет так выглядеть.
        TableViewColumn {
            role: "Tone"
            title: "Tone"
            width: 95
            delegate: ComboBox {
                id: comboBox
                model: ["Pause", "I", "II", "III", "IV", "V", "VI", "VII", "Random", "Chord"]
                anchors.fill: parent
                currentIndex: styleData.value

                signal indexChanged (var index)

                onCurrentIndexChanged:  {
                    indexChanged(currentIndex)
                }

                Component.onCompleted: {
                    comboBox.indexChanged.connect(changeIndex)
                }

                function changeIndex(currentIndex)
                {
                    tableModel.setProperty(styleData.row, styleData.role, currentIndex)
                }
            }
        }
    Сергей Баженов
    • Қар. 22, 2017, 4:15 Т.Ж.

    Работает, спасибо!

      Сергей Баженов
      • Қар. 22, 2017, 4:34 Т.Ж.

      пытаюсь проверить styleData.value на наличие значения...
      вот пример до и после получения значения

      Debug: row:1, styleData.value: , length: 0, typeof: string, (!value): true
      Debug: row:1, styleData.value: 1, length: 1, typeof: number, (!value): false

      length: (''+styleData.value).length работает... 0 если не заполнено
      typeof:работает но непонятно, откуда взялось эта string
      !value: не работает когда индекс 0

      если есть варианты - поделитесь опытом

        Evgenii Legotckoi
        • Қар. 22, 2017, 5:03 Т.Ж.

        Приведите код, пожалуйста, как Вы пытаетесь проверить значение в styleData.value и куда именно хотите его применить.

          Сергей Баженов
          • Қар. 22, 2017, 9:12 Т.Ж.

          я уже нашел ответ.  когда сравниваю ноль и пустая строка идет преобразование
          var a=''

          var b=0

          a==b// true

          a===b//ура

            Evgenii Legotckoi
            • Қар. 22, 2017, 9:49 Т.Ж.

            Да. это особенность поведения JavaScript.

            QML является JavaScript совместимым языком, поэтому и получил от него некоторые особенности реализации.
            Например, сравнение === отличается от == тем, что сравниваются не только значения переменных, но их типы данных.
            А в случае с JavaScript пустая строка и целочисленный 0 будут равны, если не сравнивать типы переменных.

              Пікірлер

              Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
              Кіріңіз немесе Тіркеліңіз
              Г

              C++ - Тест 001. Первая программа и типы данных

              • Нәтиже:66ұпай,
              • Бағалау ұпайлары-1
              t

              C++ - Тест 001. Первая программа и типы данных

              • Нәтиже:33ұпай,
              • Бағалау ұпайлары-10
              t

              Qt - Тест 001. Сигналы и слоты

              • Нәтиже:52ұпай,
              • Бағалау ұпайлары-4
              Соңғы пікірлер
              G
              GoattRockҚыр. 3, 2024, 1:50 Т.Қ.
              Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
              d
              dblas5Шілде 5, 2024, 11:02 Т.Ж.
              QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
              k
              kmssrАқп. 8, 2024, 6:43 Т.Қ.
              Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
              АК
              Анатолий КононенкоАқп. 5, 2024, 1:50 Т.Ж.
              Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
              Енді форумда талқылаңыз
              Evgenii Legotckoi
              Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
              добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
              F
              FynjyШілде 22, 2024, 4:15 Т.Ж.
              при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
              BlinCT
              BlinCTМаусым 25, 2024, 1 Т.Ж.
              Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
              BlinCT
              BlinCTМамыр 5, 2024, 5:46 Т.Ж.
              Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
              Evgenii Legotckoi
              Evgenii LegotckoiМамыр 2, 2024, 2:07 Т.Қ.
              Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

              Бізді әлеуметтік желілерде бақылаңыз