当前位置: 首页 > news >正文

怎么做网站编辑/苏州关键词seo排名

怎么做网站编辑,苏州关键词seo排名,二维码生成网址链接,国外被动收入网站做的好的在 Qt 中,C 和 QML 交互一般有如下三种方法 上下文属性:setContextProperty( )向引擎注册类型:调用 qmlRegisterType( )QML 扩展插件:虽然有很大的灵活性,但是用 Python 创建 QML 插件比较麻烦,所以这种方法…

在 Qt 中,C++ 和 QML 交互一般有如下三种方法

  • 上下文属性:setContextProperty( )
  • 向引擎注册类型:调用 qmlRegisterType( )
  • QML 扩展插件:虽然有很大的灵活性,但是用 Python 创建 QML 插件比较麻烦,所以这种方法不适用于 Python

将 Python 代码暴露给 QML:上下文属性

import random
import sys
from PySide6.QtGui import QGuiApplication
from PySide6.QtQml import QQmlApplicationEngine
from PySide6.QtCore import QUrl, QObject, Signal, Slotclass NumberGenerator(QObject):def __init__(self):QObject.__init__(self)nextNumber = Signal(int, arguments=['number'])@Slot()def giveNumber(self):self.nextNumber.emit(random.randint(0, 99))if __name__ == "__main__":app = QGuiApplication(sys.argv)engine = QQmlApplicationEngine()number_generator = NumberGenerator()engine.rootContext().setContextProperty('numberGenerator', number_generator)engine.load(QUrl("main.qml"))if not engine.rootObjects():sys.exit(-1)sys.exit(app.exec()) 
import QtQuick 2.14
import QtQuick.Window 2.14
import QtQuick.Controls 2.14Window {id: root width: 640height: 480visible: true title: qsTr("Hello World")Flow {Button {text: qsTr("Give me a number")onClicked: numberGenerator.giveNumber()}Label {id: numberLabeltext: qsTr("no number")}}Connections {target:numberGeneratorfunction onNextNumber(number) {numberLabel.text = number}}}

上述代码要结合 .py 文件进行理解,onClicked(发射 clicked 信号)会触发槽函数 numberGenerator.giveNumber(),该函数会发射 numberGenerator.nextNumber 信号,这个信号又被 QML 中的 onNextNumber 捕获,并修改 label 的显示结果。

.py 文件使用 setContextProperty() 函数 把 Python 对象 number_generator 暴露给 QML (对应 QML 中的 numberGenerator),这种方式会直接添加到 QML 的上下文环境中,在QML 中可以直接使用,不需要重新导入,使用方便,但容易导致命名冲突。

这里使用 Slot 装饰符将 giveNumber() 变成槽函数,不然无法使用

将 Python 对象暴露给 QML :注册类型

// #region global
import QtQuick
import QtQuick.Window
import QtQuick.Controlsimport GeneratorsWindow {id: rootwidth: 640height: 480visible: truetitle: qsTr("Hello Python World!")Flow {Button {text: qsTr("Give me a number!")onClicked: numberGenerator.giveNumber()}Label {id: numberLabeltext: qsTr("no number")}}NumberGenerator {id: numberGenerator}Connections {target: numberGeneratorfunction onNextNumber(number) {numberLabel.text = number}}
}
// #endregion global
#region global
import random
import sysfrom PySide6.QtGui import QGuiApplication
from PySide6.QtQml import QQmlApplicationEngine, qmlRegisterType
from PySide6.QtCore import QUrl, QObject, Signal, Slotclass NumberGenerator(QObject):def __init__(self):QObject.__init__(self)nextNumber = Signal(int, arguments=['number'])@Slot()def giveNumber(self):self.nextNumber.emit(random.randint(0, 99))if __name__ == '__main__':app = QGuiApplication(sys.argv)engine = QQmlApplicationEngine()qmlRegisterType(NumberGenerator, 'Generators', 1, 0, 'NumberGenerator')# engine.load(QUrl("main.qml"))import ospath = os.path.dirname(__file__) + os.sep + 'main.qml'engine.load(path)if not engine.rootObjects():sys.exit(-1)  sys.exit(app.exec())
#endregion global

main.qml 文件中需要导入 Python 注册的模块 Generators,并将类实例化为 NumberGenerator{…},该实例就可以向任何其他 QML 元素一样工作。

qmlRegisterType( ) 函数

把 Python 对象暴露给 QML ,主要使用 qmlRegisterType() 函数。qmlRegisterType( ) 函数来自于 PySide6.QtQml 模块并接收5个参数:

qmlRegisterType (pytype: type, uri: str, versionMajor: int, versionMinor: int, qmlName: str**)**

参数:

  • pytype (type) – Python 类(py文件中的类名)
  • uri (str) – 表示对类的引用,如本案例的 Generator(QML中 import 的名称)
  • versionMajor (int) – 主要版本编号,如本案例中的 1
  • versionMinor (int) – 次要版本编号,如本案例中的 0
  • qmlName (str) – 暴露给QML的类名称,本案例中的 NumberGenerator

返回类型:int (the QML type id)

相互关系如下图所示:
在这里插入图片描述

在 QML 中调用 Python 属性的方法

这是一种常用的方法,先介绍 Python 中的 Property( ) 函数——property() 函数的作用是在新式类中返回属性值。

class property([fget[, fset[, fdel[, doc]]]])

参数

  • fget – 获取属性值的函数
  • fset – 设置属性值的函数
  • fdel – 删除属性值函数
  • doc – 属性描述信息

返回值: 返回新式类属性。

举例如下:

class C (object):def __init__(self):self._x = Nonedef getx(self):return self._xdef setx(self, value):self._x = valuedef delx(self):del self._xx = property(getx, setx, delx, "I am the 'x' property.")

如果 c = C( ),则 c.x 将触发 getter 信号, c.x = value 将触发 setter 信号,del c.x 将触发 deleter 信号。

参照 Python 中的 Property( ) 函数,Qt 中不仅提供了自己的属性,还提供了信号和槽的支持。由此可以理解,以下代码的几个参数分别表示类型,已及 getter 信号、setter 信号和通知信号(当属性改变时需要发出该信号,通知属性的变化):

from PySide6.QtCore import Property
maxNumber = Property(int, get_max_number, set_max_number, notify = maxNumberChanged)

之所以绕一圈进行修改,是因为在 QML 中直接通过 JavaScript 更改属性会破坏与属性的绑定,而通过显示使用 setter( ) 函数可以避免这种情况。

参考

相关文章:

QML 与 Python 交互

在 Qt 中,C 和 QML 交互一般有如下三种方法 上下文属性:setContextProperty( )向引擎注册类型:调用 qmlRegisterType( )QML 扩展插件:虽然有很大的灵活性,但是用 Python 创建 QML 插件比较麻烦,所以这种方法…...

React基础教程(三):JSX语法

React基础教程(三):JSX语法 1、JSX简介 全称:JavaScript XMLreact定义的一种类似于XML的JS扩展语法:JSXML本质是React.createElement(component, props, ...children)方法的语法糖作用:用来简化创建虚拟DOM(注意&…...

软件测试岗位都是女孩子在做吗?

听我一朋友说,测试岗位基本都是女孩子做。” 不知道是不是以前“软件测试岗”给人印象是“不需要太多技术含量”的错觉,从而大部分外行认为从业软件测试的人员中女生应占了大多数。比如有人就觉得:软件测试主要是细心活,所以女生…...

ARP协议,带你了解ARP协议

目录 一、ARP协议概述 二、使用ARP的四种情况 三、ARP缓存 四、ARP的工作原理 1. 地址解析 2. 地址缓存 五、ARP报文格式 1. ARP请求报文格式 2. ARP响应报文格式 六、免费ARP 七、代理ARP 一、ARP协议概述 ARP(Address Resolution Protocol)地…...

基于Java汽车客运站管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…...

0203使用规则-索引-MySQL

文章目录 1 联合索引1.1 最左前缀法则1.2 范围查询 2 索引失效2.1 常见情况2.2 数据分布影响 3 SQL提示4 覆盖索引和回表查询5 前缀索引6 单列和联合索引7 设计原则结语 1 联合索引 1.1 最左前缀法则 在Mysql数据库中创建了联合索引(或称复合索引,即包含…...

LVS+Keepalived群集

一、Keepalived概述 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。 在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器&#xff0c…...

抖音矩阵系统源代码开发部署--源码搭建

抖音矩阵系统是一个具有强大功能的开放性平台,通过数据挖掘技术能够实现精准的用户画像和个性化推荐,这也是抖音成为国内最受欢迎的短视频平台之一的原因之一。矩阵系统的开发需要大量的技术支持和数据分析,同时也需要综合运用大数据、机器学…...

如何用Jmeter进行接口测试 ,这应该是全网最详细的教程了

一、Jmeter 的使用步骤 打开Jmeter 安装包,进入\bin 中,找到"jmeter.bat", 点击打开即可。 在下图打开的Jmeter 页面中,右键“测试计划” -> “添加” -> "Threads(Users)" -> “线程组”, 建立线…...

C语言---malloc(0)会产生什么结果,真的是空指针吗?

前言 (1)几天前在一个交流群中看到有人说,面试问malloc(0)会怎么样是真的恶心。 (2)这个突然激起了我的好奇心。居然还可以malloc(0)?! (3)经过测试最后,发现…...

建模助手618 | 谁不囤点Revit插件我都会生气!

大家好,这里是建模助手。 早在5月份,我们已经就“618”这个事情高调了一番,以提前放“价”的姿势,让许多用户以躺赢的状态拉开了年中大促的序幕。(5月购买的盆友,切记看完全文,内附彩蛋 活动反…...

【“职场程序员是否会保护自己的隐私?为何要求程序员之间保密薪资?”】

职场程序员之间确实有一些秘密,其中之一便是对薪资保密。这并非完全是程序员们的独立行为,而是因为一些公司或组织规定员工之间不能互相透露薪水信息。 第一个原因是保护公司自身利益。如果一个程序员知道其他同事的薪资水平比自己高,他可能…...

企业工程管理系统源码之提高工程项目管理软件的效率

高效的工程项目管理软件不仅能够提高效率还应可以帮你节省成本提升利润 在工程行业中,管理不畅以及不良的项目执行,往往会导致项目延期、成本上升、回款拖后,最终导致项目整体盈利下降。企企管理云业财一体化的项目管理系统,确保…...

创新指南 | 推动销售的17个可落地的集客式营销示例

无论您是开启集客式的营销有一段时间还是处于起步阶段,了解像您这样的企业是如何粉碎竞争对手的的集客式策略总是有帮助的。无论您的公司做什么,它所服务的行业,是B2B还是B2C ,您都可以在这里找到许多可以使用的示例。 在本文中&…...

ASEMI代理光宝光耦LTV-0314的应用与优势

编辑-Z 在电子设备的设计和制造过程中,光耦合器是一种至关重要的组件。它们在电路中起到隔离作用,保护电子设备免受电压冲击和电流过载的影响。今天,我们将深入探讨一种特殊的光耦合器——LTV-0314,它的特性、应用以及优势。 一、…...

Apikit 自学日记: Apikit 如何发起测试

进入 API 文档详情页,点击上方 测试 标签,进入 API 测试页,系统会根据API文档自动生成测试界面并且填充测试数据。 填写请求参数 首先填写好请求参数。 请求头部 您可以输入或导入请求头部。批量导入的数据格式为 key : value ,…...

python-glob模块_表格及代码样例

glob模块 文章目录 glob模块1. glob.glob(pathname):根据指定的模式匹配文件路径,并返回匹配的路径列表2. glob.iglob(pathname):返回一个迭代器,逐个匹配文件路径,适用于大量文件的情况3. glob.escape(pathname)&…...

GitHub Copilot 最全安装、使用

GitHub Copilot 最全安装、使用教程 一、温馨提示 GitHub Copilot 目前为止可以免费试用一个月,但是试用的前提是必须要绑定银行卡,因为后续会自动扣费,所以请注意试用结束日期,自己定好闹钟关闭订阅。 订阅价格为每月10美刀&a…...

C语言 指针(特别篇)

本篇目录 C语言 指针(特别篇)内存地址简要介绍C语言指针C语言的指针可以指向什么?取地址符 &(Address-of Operator)C语言中的 * 号运算符示例集:指向变量的指针指向数组的指针指向字符串的指针二级指针指针数组的…...

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(5月26日论文合集)

文章目录 一、检测相关(9篇)1.1 Energy-based Detection of Adverse Weather Effects in LiDAR Data1.2 Anomaly Detection with Conditioned Denoising Diffusion Models1.3 Mask Attack Detection Using Vascular-weighted Motion-robust rPPG Signals1.4 Improved Multi-Sca…...

网络编程与自动化(python)

20.1 网络编程与自动化概述 传统网络运维困境大家在日常的网络运维中是否遇到过如下问题: 设备升级:现网有数千台网络设备,你需要周期性、批量性地对设备进行升级。配置审计:企业年度需要对设备进行配置审计。例如要求所有设备开启sTelnet功能,以太网交换机配置生成树安全…...

有趣的数学 对称/非对称加密简史及数学原理一览

一、非对称加密简史 1、算法建立 对于任何想发送加密信息的人,另一个问题是如何让接收人知道这条信息一开始是如何加密的。对于像字母替换式密码这样的密码,问题在于,一旦窃听者知道了加密方案,后续的信息都可以轻松获取。 公钥加…...

AI大模型落地不远了!首个全量化Vision Transformer的方法FQ-ViT(附源代码)

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID|计算机视觉研究院 学习群|扫码在主页获取加入方式 论文地址:https://arxiv.org/pdf/2111.13824.pdf 项目代码:https://github.com/megvii-research/FQ-ViT 计…...

YouTubeDNN

这个youTubeDNN主要是工程导向,对于推荐方向的业界人士真的是必须读的一篇文章。它从召回到排序整个流程都做了描述,真正是在工业界应用的经典介绍。 作者首先说了在工业上YouTube视频推荐系统主要面临的三大挑战: 1.Scale(规模)&#xff1…...

面向对象的介绍和内存

学习面向对象内容的三条主线 • Java 类及类的成员:(重点)属性、方法、构造器;(熟悉)代码块、内部类 • 面向对象的特征:封装、继承、多态、(抽象) • 其他关键字的使用…...

【数据可视化】Plotly Express绘图库使用

Plotly Express是一个基于Plotly库的高级Python可视化库。它旨在使绘图变得简单且直观,无需繁琐的设置和配置。通过使用Plotly Express,您可以使用少量的代码创建具有丰富交互性和专业外观的各种图表。以下是Plotly Express的一些主要特点和优势&#xf…...

小红书企业号限流原因有哪些,限流因素

作为企业、品牌在小红书都有官方账号,很多人将注册小红书企业号看作是获取品牌宣推“特权”的必行之举。事实真的如此吗,那为什么小红书企业号限流频发,小红书企业号限流原因有哪些,限流因素。 一、小红书企业号限流真的存在吗 首…...

1.6C++双目运算符重载

C双目运算符重载 C中的双目运算符重载指的是重载二元运算符,即有两个操作数的运算符,如加减乘除运算符“”、“-”、“*”和“/”等。 通过重载双目运算符,可以实现自定义类型的运算符操作。 比如可以通过重载加减运算符实现自定义类型的向…...

CDD诊断数据库的简单介绍

1. 什么是数据库? 数据库是以结构化方式组织的一个数据集合。 比如DBC数据库: Network nodes Display Rx Messages EngineState(0x123) 通过结构化的方式把网络节点Display里Rx报文EngineState(0x123)层层展开。这种方 式的好处是:层次清晰,结构分明,易于查找。 2. 什么…...

【笔试强训选择题】Day25.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!&#xff…...