Nano Hash - криптовалюты, майнинг, программирование

Управление моделью на основе QStringList со стороны QML

Я могу предоставить модель на основе QStringList со стороны C++ для QML как описано здесь

Как я могу изменить модель на основе QStringList со стороны QML (вставить новые элементы, удалить их)? Доступны ли некоторые функции QStringListModel или QStringList для вызова из QML?

08.08.2014

Ответы:


1

Из документации Qt:

Любой метод производного от QObject типа доступен из кода QML, если он:

A public method flagged with the Q_INVOKABLE() macro
A method that is a public Qt slot

У вас может быть класс менеджера, производный от QObject, и выставить его в QML. Затем вы можете реализовать желаемые функции в менеджере и получить к нему доступ со стороны QML:

class StringListManager : public QObject
{
    Q_OBJECT

public slots:
    void append (QString str) 
    { 
        m_list.append(str); 
    }


private:
    QStringList m_list;
};

Также экземпляр StringListManager должен быть установлен в качестве данных контекста для вашего файла qml:

QQmlEngine engine;
StringListManager manager;
engine.rootContext()->setContextProperty("manager", &manager);

Теперь вы можете получить доступ к функциям класса менеджера со стороны QML:

onClicked: {
    manager.append("From QML");
}
08.08.2014
  • И почему нельзя управлять моделью как массивом JS? В документе говорится, что QStringList представлен в виде массива qt-project.org/doc/qt-5/ 08.08.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..