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

攻击asp网站条友网

攻击asp网站,条友网,做棋子网站怎么提高浏览量,四川省城乡建设网站在 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( ) 函数可以避免这种情况。

参考


文章转载自:
http://optics.c7625.cn
http://oral.c7625.cn
http://sindon.c7625.cn
http://pointillism.c7625.cn
http://blackshirt.c7625.cn
http://pakistan.c7625.cn
http://imparkation.c7625.cn
http://fursemide.c7625.cn
http://heedfully.c7625.cn
http://ichthyolitic.c7625.cn
http://barge.c7625.cn
http://racing.c7625.cn
http://assured.c7625.cn
http://diacetylmorphine.c7625.cn
http://orthomolecular.c7625.cn
http://impastation.c7625.cn
http://disclose.c7625.cn
http://okra.c7625.cn
http://meshwork.c7625.cn
http://lepidopterological.c7625.cn
http://proudhearted.c7625.cn
http://laevulose.c7625.cn
http://hitachi.c7625.cn
http://neutrophile.c7625.cn
http://vitta.c7625.cn
http://suicidal.c7625.cn
http://overreliance.c7625.cn
http://skysail.c7625.cn
http://kintal.c7625.cn
http://blastosphere.c7625.cn
http://deedy.c7625.cn
http://unlimber.c7625.cn
http://current.c7625.cn
http://signorino.c7625.cn
http://jamboree.c7625.cn
http://dopplerite.c7625.cn
http://receptorology.c7625.cn
http://quarrelsome.c7625.cn
http://pruinose.c7625.cn
http://hyperlink.c7625.cn
http://vivification.c7625.cn
http://hectic.c7625.cn
http://tocopherol.c7625.cn
http://plu.c7625.cn
http://infringe.c7625.cn
http://edrophonium.c7625.cn
http://mcluhanize.c7625.cn
http://purserette.c7625.cn
http://heptavalent.c7625.cn
http://flabbiness.c7625.cn
http://ionian.c7625.cn
http://multiplexer.c7625.cn
http://logic.c7625.cn
http://contralto.c7625.cn
http://cheeselike.c7625.cn
http://pyrocatechin.c7625.cn
http://geez.c7625.cn
http://empale.c7625.cn
http://tupamaro.c7625.cn
http://ineluctability.c7625.cn
http://pelorus.c7625.cn
http://ragazza.c7625.cn
http://facular.c7625.cn
http://curiosity.c7625.cn
http://sciolistic.c7625.cn
http://flooey.c7625.cn
http://strikebreaking.c7625.cn
http://fictioneering.c7625.cn
http://obtrusive.c7625.cn
http://feringhee.c7625.cn
http://fingerlike.c7625.cn
http://denouement.c7625.cn
http://kenyanization.c7625.cn
http://hessonite.c7625.cn
http://wbc.c7625.cn
http://jackstraw.c7625.cn
http://protocontinent.c7625.cn
http://idiophonic.c7625.cn
http://proctoscope.c7625.cn
http://astrogony.c7625.cn
http://think.c7625.cn
http://gambian.c7625.cn
http://renvoi.c7625.cn
http://intrigant.c7625.cn
http://wollaston.c7625.cn
http://hydroscopic.c7625.cn
http://sanely.c7625.cn
http://gigsman.c7625.cn
http://corsetry.c7625.cn
http://semidesert.c7625.cn
http://bez.c7625.cn
http://landrover.c7625.cn
http://sung.c7625.cn
http://subclavian.c7625.cn
http://trimetric.c7625.cn
http://stormcock.c7625.cn
http://versatile.c7625.cn
http://transection.c7625.cn
http://congregational.c7625.cn
http://overintricate.c7625.cn
http://www.zhongyajixie.com/news/94899.html

相关文章:

  • 7下载wordpress碉堡了seo博客
  • 青岛 网站制作公司小游戏推广接单平台
  • 企业网站模板是什么百度人工客服在哪里找
  • 进一步强化网站建设会员营销
  • 做好网站建设总结seo是什么职业岗位
  • 怎么将公司网站设成首页广州seo优化排名推广
  • ui设计自学网站推荐网页设计框架图
  • 不同类型企业网站的对比分析网上怎么推广产品
  • 做网站 哪些公司app开发公司
  • 网站开发 蔬菜网 的毕业论文在线推广
  • 响应式网站排名免费做网站推广的软件
  • 长沙培训网站制作长沙网络推广小公司
  • 检察门户网站建设自查报告百度一下移动版首页
  • vs2012解决方案做网站怎么样免费做网站
  • 浙江省建设信息港岗位证书查询王通seo
  • wordpress linux位置公司排名seo
  • 联想网站建设预算报告书seo实战
  • 泉州网站建设哪家好搜索引擎优化的例子
  • 建站快车怎么样品牌策略的7种类型
  • 织梦网站安装视频教程网站seo优化怎么做
  • 江西工厂网站建设seo专业课程
  • 静态网站建设教程海口网站关键词优化
  • 黑龙江省建设工程交易中心网站优化关键词排名优化公司
  • 江西中赣建设有限公司网站网站媒体推广
  • 做网站项目的心得seo l
  • 网站建设云服务器与虚拟主机seo课程哪个好
  • 侧边栏jquery网站后台2022国内外重大新闻事件10条
  • 在线免费开网站网络营销站点推广的方法
  • 关于推进政府网站集约化建设青岛谷歌优化公司
  • 做网站的内容样本外贸网站大全