返回顶部
首页 > 资讯 > 后端开发 > Python >pyqt5与QML开发小结
  • 228
分享到

pyqt5与QML开发小结

小结QML 2023-01-31 00:01:58 228人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

Qt 5.11 与 qt 5.12 中Qquick的差异还是蛮大的,由开发环境:Pyqt5.11 + Qt5.12 部署到 Pyqt5.11 + Qt5.11时遇到以下问题: 1.当一个Item引用另一个Item,当层次比较深入时,有可

Qt 5.11 与 qt 5.12 中Qquick的差异还是蛮大的,由开发环境:Pyqt5.11 + Qt5.12 部署到 Pyqt5.11 + Qt5.11时遇到以下问题:

1.当一个Item引用另一个Item,当层次比较深入时,有可能引用不到此Item对象。这时可以用alias别名尝试把此对象作为顶层类的属性。另还有一个可能是因为Item文件的命名冲突,比如我把Item文件命名为ContentLeft.qml就会出现一些莫名奇妙的问题,后来把名称改为ContentLeftF.qml就没有。由“ContentLeft"改成”ContentLeftF.qml"问题解决。

2.有些str类型的属性可以直接用于QML,但有些会提示QString不对

    #barcode
    @pyqtProperty(str,notify=barcodeChanged)
    def barcode(self):
        return self._barcode

    @barcode.setter
    def barcode(self, value):
        self._barcode = value
        self.barcodeChanged.emit(value)

把以上写法改为下面写法即没问题:

projectName = pyqtProperty(str, fget=getProjectValue, fset= setProjectValue, notify=projectNameChanged)

1.把python类注册成qml类

qmlReGISterType(CameraOpenCV,'MyCamera',1,0,'MyCustomOpenCVItem')

可以直接在qml用

import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.1
import MyCamera 1.0

Item{
    id:root
    property alias myCustomOpenCVItem: myCustomOpenCVItem
    Rectangle{
        color:"black"
        anchors.fill: parent
        MyCustomOpenCVItem{
            id:myCustomOpenCVItem
            objectName:"camera_win"
            anchors.fill:parent
        }
        MouseArea{
            anchors.fill: parent
            onClicked: {
                 content.contentMiddle.myCustomOpenCVItem.save()
            }
        }
    }
}

2.把Python对象传至qml

        self.imageModel = ModelImages()
        self.rootContext().setContextProperty('ImagesModel', self.imageModel)

qml中直接调用

        ListView {
            id : m_listView
            width: parent.width
            height: root.height
            clip: true
            model: ImagesModel //modelImages
            delegate: m_delegate
            spacing: 5
            focus: true
            verticalLayoutDirection: ListView.BottomToTop
            add: Transition {
                NumberAnimation { properties: "y";duration: 400 }
            }
            remove: Transition {
                NumberAnimation { properties: "y";duration: 400 }
            }
        }

3.设置可在qml中用的属性

方法一:

self._GoodsName = '' #当前商品名称
goodsNameChanged = pyqtSignal(str)
    @pyqtProperty(str,notify=goodsNameChanged)
    def goodsName(self):
        return self._goodsName

    @goodsName.setter
    def goodsName(self, value):
        self._goodsName = value
        self.goodsNameChanged.emit(value)

方法二:

projectName = pyqtProperty(str, fget=getProjectValue, fset= setProjectValue, notify=projectNameChanged)

4.qml动态设置component

                function getLoader (){

                    switch (uploadStatus)
                    {
                    case "imgUploadFail":
                        return uploadFail
                    case "imgUploadOK":
                        return uploadOK
                    case "imgUploading":
                        return uploading
                    case "imgUploadReady":
                        return null
                    default:
                        return null
                    }

                }

                Loader{
                    id:currLoad
                    anchors.fill:parent
                    sourceComponent:getLoader()
                }

5.使用虚拟键盘

需要先安装VirtualKeyboard插件

先声明:

os.environ["QT_IM_MODULE"] = "qtvirtualkeyboard"

qml中:

import QtQuick.VirtualKeyboard 2.2
        //键盘
        InputPanel{
            id: vkb
            z:3
            visible: false
            anchors.bottom: parent.bottom
            width: parent.width * 0.85
            height: parent.height * 0.3
            x:parent.width * 0.5 - width * 0.5
            //这种集成方式下点击隐藏键盘的按钮是没有效果的,
            //只会改变active,因此我们自己处理一下
            onActiveChanged: {
                if(!active) { visible = false; }
            }
        }

 

--结束END--

本文标题: pyqt5与QML开发小结

本文链接: https://lsjlt.com/news/181558.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • pyqt5与QML开发小结
    qt 5.11 与 qt 5.12 中Qquick的差异还是蛮大的,由开发环境:Pyqt5.11 + Qt5.12 部署到 Pyqt5.11 + Qt5.11时遇到以下问题: 1.当一个Item引用另一个Item,当层次比较深入时,有可...
    99+
    2023-01-31
    小结 QML
  • uniapp开发小程序的开发规范总结
    目录一、项目结构二、开发规范遵循Vue 单文件组件 (SFC) 规范组件及接口规范三、css样式规范全局样式与局部样式尺寸响应式字体的使用请使用flex布局方式总结一、项目结构 在完...
    99+
    2024-04-02
  • Android开发常见错误小结
    本文实例总结了Android开发的常见错误。分享给大家供大家参考。具体如下: 错误1: 在intent中添加了一个内容,在调用getStringExtra读取的时候,总是报错。...
    99+
    2022-06-06
    小结 android开发 Android
  • Android开发常用标签小结
    本文较为详细的总结了Android开发常用标签。分享给大家供大家参考。具体如下: android中inputType android中inputType属性在EditText输...
    99+
    2022-06-06
    小结 android开发 标签 Android
  • 【小程序专栏】总结uniapp开发小程序的开发规范
    文章目录 一、项目结构二、开发规范遵循Vue 单文件组件 (SFC) 规范组件及接口规范 三、css样式规范全局样式与局部样式尺寸响应式字体的使用请使用flex布局方式 一...
    99+
    2023-09-09
    小程序 vue.js javascript uniapp
  • SpringBoot的三大开发工具小结
    目录一、SpringBoot Dedevtools二、Lombok三、Spring Configuration Processor一、SpringBoot Dedevtools 他是...
    99+
    2024-04-02
  • 开发者必备Docker命令小结
    目录Docker 简介Docker 环境安装Docker 镜像常用命令搜索镜像下载镜像如何查找镜像支持的版本列出镜像删除镜像Docker 容器常用命令新建并启动容器列出容器停止容器强...
    99+
    2024-04-02
  • pycharm如何与vue结合开发
    随着前端技术的快速发展,Vue成为了一款非常流行的前端框架。对于Python开发人员来说,利用pycharm与vue的结合开发可以提高开发效率,但对于初学者来说,这个过程可能有点复杂。本篇文章将介绍如何在pycharm中与vue结合开发。首...
    99+
    2023-05-14
  • pycharm怎么与vue结合开发
    本篇内容主要讲解“pycharm怎么与vue结合开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“pycharm怎么与vue结合开发”吧!首先,我们需要安装node.js和vue-cli。如果您...
    99+
    2023-07-05
  • Android开发中Activity属性设置小结
    Activity是Android组件中最基本也是最为常见用的四大组件之一,在 android开发中 ,运用极为广泛,作为初学者需要熟练掌握,下例为Activity属性常用设置。...
    99+
    2022-06-06
    小结 activity android开发 Android
  • Android开发的16条小经验总结
      Android开发的16条小经验总结,希望对各位搞Android开发的朋友有所帮助。   1.TextView中的getTextSize返回值是以像素(px)为单位的...
    99+
    2022-06-06
    android开发 Android
  • uniapp开发小程序的经验总结
    1. 新建UI项目 首先,我们的UI是基于ColorUI,当ColorUI没有的样式,就基于Uniapp自带的UI。所以项目的开始要引入这两个UI框架。 如下,新建一个uni-ui...
    99+
    2024-04-02
  • python美多商城项目开发小结
    目录项目总览1.项目开发模式2. 项目运行机制3. 知识要点配置开发环境1. 新建配置文件2. 配置jinja2模板引擎 3.配置mysql4.配置redis5.配置工程日...
    99+
    2024-04-02
  • 小程序开发总结之模块化开发流程规范
    模块化开发是指将一个系统或者一个项目按照功能或者业务逻辑进行划分,每个功能或者业务逻辑都被封装成一个独立的模块,模块之间通过接口进行...
    99+
    2023-10-12
    小程序
  • 微信小程序开发常用功能点与使用方法总结
    在这里,我主要整理了一些小程序开发过程中常用的功能点,非常实用,下面来一看看看吧  1、获取高度宽度 var windowHeight = wx.getSystemIn...
    99+
    2024-04-02
  • Android开发中WebView的简单使用小结
    前言 WebView(网络视图)在Andorid中就是用来显示网页的,下面我们来一起看看它是如何使用的。 一、基本使用 1.声明权限,WebView不可避免地要用到网络,我们...
    99+
    2022-06-06
    小结 android开发 webview Android
  • android开发框架afinal使用方法小结
    本文实例为大家分享了android afinal使用方法,供大家参考,具体内容如下 1.注解功能 1)继承:FinalActivity ( 需要复制 afinal_0.5.1_...
    99+
    2022-06-06
    小结 方法 android开发 Android
  • Android开发板开发总结
    Android系统的网络 不能同时使用GPRS和WIFI,android系统设备的网络状态分三种: WIFI GPRS 无 手机的默认方式是:W...
    99+
    2022-06-06
    android开发 Android
  • ASP与bash如何结合开发框架?
    ASP和bash是两种不同的开发语言,它们分别用于Web开发和Shell脚本编写。但是,在某些情况下,我们可能需要将它们结合起来使用,以便更好地满足我们的需求。在本文中,我们将介绍ASP和bash如何结合开发框架。 一、为什么要将ASP和b...
    99+
    2023-06-23
    bash 框架 leetcode
  • Android编程开发之EditText中inputType属性小结
    本文总结分析了Android编程开发之EditText中inputType属性。分享给大家供大家参考,具体如下: android 1.5以后添加了软件虚拟键盘的功能,所以在输入...
    99+
    2022-06-06
    edittext 小结 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作