{"id":20280730,"url":"https://github.com/patrickkidd/qmlcontext","last_synced_at":"2026-06-03T22:31:10.228Z","repository":{"id":260139486,"uuid":"880433710","full_name":"patrickkidd/qmlcontext","owner":"patrickkidd","description":"Proof of concept for python models and embedded qml widgets","archived":false,"fork":false,"pushed_at":"2024-11-01T00:46:51.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-04T02:54:22.345Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/patrickkidd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-29T18:04:15.000Z","updated_at":"2024-11-01T00:46:54.000Z","dependencies_parsed_at":"2024-10-29T20:35:14.703Z","dependency_job_id":null,"html_url":"https://github.com/patrickkidd/qmlcontext","commit_stats":null,"previous_names":["patrickkidd/qmlcontext"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/patrickkidd/qmlcontext","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickkidd%2Fqmlcontext","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickkidd%2Fqmlcontext/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickkidd%2Fqmlcontext/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickkidd%2Fqmlcontext/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/patrickkidd","download_url":"https://codeload.github.com/patrickkidd/qmlcontext/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickkidd%2Fqmlcontext/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33883102,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T13:37:43.927Z","updated_at":"2026-06-03T22:31:10.202Z","avatar_url":"https://github.com/patrickkidd.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# qmlcontext - Architectural POC for Python + QQuickWidget\n\nThis is to demonstrate a clean architecture for embedding Qml views in a\nQtWidgets application using PyQt. The main focus is to show a proper python\nobject, python model, qml view approach.\n\n## Problem/Context\n\n- Combining python and qml is difficult because you can't debug the qml code.\n    - It is difficult to understand how/why qml properties are set the way they\n      are without qml stack traces.\n    - Trying to make a clean reactive QtQuick UI with python data causes difficult\n      to debug circular bindings in qml.\n- Portable PyQt applications need to use QtQuick to ensure performant OpenGL\nrendering across all platforms, e.g. Windows, macOS, iOS, iPadOS. Such an\napplication needs to use QtWidgets if QMainWindow is going to manage menus.\n    - It can be difficult to understand how and where to link qml items and\n      signals to their python counterparts.\n\n## Architecture\n\n### Application Type\n\nThe demo application is a document editor based on QMainWindow. One document can\nbe opened at a time by the QMainWindow. Opening a new document file replaces the\ndocument object on the main window.\n\n### Object Model\n\nThe main, UI-agnostic document object is `Document`. A single `DocumentModel`\nwraps the current `Document` object and it's properties for it's qml property\nsheet `DocumentProperties`. \n\nThis demo only demonstrates the architecture for python models to be edited by a\npersistent qml view. It only does this with `Document` and `DocumentProperties`,\nbut the same principles can be applied to any other model / property sheet\ncombo.\n\n### Property Flow\n\nProperties in the `Document` object can be edited progrmatically directly from\npython, or through user interaction via `DocumentProperties`. Everything is\nautomatically kept in sync.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatrickkidd%2Fqmlcontext","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatrickkidd%2Fqmlcontext","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatrickkidd%2Fqmlcontext/lists"}